dd()函数使用会报500的错,我解决500后,然后会报跨域的问题,请问有朋友遇到过这样的情况吗?

1. 运行环境

centos

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

laravel8.5

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

PHP 版本:7.4

2. 问题描述?

目前我手上在做的三个项目都用到了laravel,其中两个使用dd()函数都没问题,其中一个项目当我使用dd()就会报跨域的错,但我不打断点是没问题的。或许不是dd函数的问题,是有exit();因为我var_dump();exit;也会报错,网上搜了很多办法都没解决,想请问下有大佬解决过吗

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
JaguarJack
最佳答案

dd肯定会导致跨域的. 你需要重写 dd 方法,在输出前修改头信息来解决跨域问题。举个例子 dd_

function dd_(...$vars) {
     header('Access-Control-Allow-Origin: *');
        header('Access-Control-Allow-Methods: *');
        header('Access-Control-Allow-Headers: *');
        dd(...$vars);
}
1年前 评论
Laravel_Panda (楼主) 1年前
Laravel_Panda (楼主) 1年前
php_yt 1年前
Laravel_Panda (楼主) 1年前
讨论数量: 13
JaguarJack

dd肯定会导致跨域的. 你需要重写 dd 方法,在输出前修改头信息来解决跨域问题。举个例子 dd_

function dd_(...$vars) {
     header('Access-Control-Allow-Origin: *');
        header('Access-Control-Allow-Methods: *');
        header('Access-Control-Allow-Headers: *');
        dd(...$vars);
}
1年前 评论
Laravel_Panda (楼主) 1年前
Laravel_Panda (楼主) 1年前
php_yt 1年前
Laravel_Panda (楼主) 1年前

使用 dd () 就会报跨域的错,但我不打断点是没问题的

检查你的跨域处理逻辑。dd了后面响应添加Access-Control-Allow-Origin 响应头的逻辑就不走了

eg: 比如控制器dd了,那后置中间件设置响应头的代码就不走了

public function handle($request, Closure $next) {
            $response = $next($request)
            $response->headers->set('Access-Control-Allow-Origin', '*')
            return $response;

}

三个项目都用到了 laravel,其中两个使用 dd () 函数都没问题

另外两个可能是你nginx配置文件检查request_methodoptions时nginx帮你处理的,实际并没有用php的响应头

1年前 评论
Laravel_Panda (楼主) 1年前
porygonCN

现在的dd()函数会返回500的状态码 由于跨域中间件是后置中间件 所以dd后无法走到跨域中间件 你前端就会报错了,我建议你用dump()

1年前 评论
sanders

调试用的函数,不要当正常响应使用。

1年前 评论
Laravel_Panda (楼主) 1年前
sanders (作者) 1年前

你的处理跨域的逻辑,在你打断点的后面执行的, 你把处理跨域的逻辑,放到入口处理就可以了,至于是中间键还是啥,看着来就好了

1年前 评论

dd 不是自己调试的吗,不用关心吧。如果运用到业务逻辑里 不应该用return 吗

1年前 评论

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