控制器使用dd()方法后,axios请求接口,浏览器报错 No 'Access-Control-Allow-Origin' header is present on the requested resource.

0. 结果

还是跨域有问题,使用 vue-cli 的 devServer 解决问题

1. 运行环境

sail
sanctum 2.14.2

1). 当前使用的 Laravel 版本?

laravel 9.5.1

2). 当前使用的 php/php-fpm 版本?

PHP 版本:

8.1.3

2. 问题描述?

控制器代码

public function store(Request $request)
{
  dd($request->data);
  return response()->api(['a'=>213]);
}

cors.php

'allowed_origins' => [env('FRONTEND_URL'), 'http://localhost:8080'],

前端请求代码 localhost:8080

axios.defaults.baseURL = 'http://foobar.test/api';
axios.defaults.headers.common['Authorization'] = 'Bearer xx';
axios.defaults.headers.post['Content-Type'] = 'application/json';
axios.post('foobar', data)

3. 您期望得到的结果?

postman等接口请求工具可以获得期望结果

控制器使用dd()方法后,axios请求接口,浏览器报错 No 'Access-Control-Allow-Origin' header is present on the requested resource.

4. 您实际得到的结果?

控制器使用dd()方法后,axios请求接口,浏览器报错 No 'Access-Control-Allow-Origin' header is present on the requested resource.

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
porygonCN
最佳答案

laravel 有CORS中间件, 这是个后置中间件, 你在逻辑中dd之后 请求进程die了, 所以cors中间件没有生效,从而导致报了跨域错误

file

2年前 评论
讨论数量: 5
laravel_peng

No 'Access-Control-Allow-Origin' header is present on the requested resource.

  1. 你的请求跨域了,什么是跨域可以了解:了解跨域,看这篇就够了!
  2. Laravel 跨域一般的解决办法是增加中间件,然后在路由中引用这个中间件。具体可参考论坛中 Laravel 跨域解决方案
2年前 评论
llkllc (楼主) 2年前

因为 dd 打印的时候阻断了正常的响应,没有将跨域相关的响应头返回给客户端

2年前 评论
porygonCN

laravel 有CORS中间件, 这是个后置中间件, 你在逻辑中dd之后 请求进程die了, 所以cors中间件没有生效,从而导致报了跨域错误

file

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!