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

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 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年前 评论