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

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

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

file

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

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

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

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

3年前 评论

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

file

3年前 评论

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