控制器使用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.

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《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年前 评论

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