Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么CORS在某些地方起作用,但在其他地方却不起作用?_Php_Laravel_Cors - Fatal编程技术网

Php 为什么CORS在某些地方起作用,但在其他地方却不起作用?

Php 为什么CORS在某些地方起作用,但在其他地方却不起作用?,php,laravel,cors,Php,Laravel,Cors,在我的Laravel应用程序中,我已经设置了一条全天候路线来处理CORS的飞行前请求 Route::options('/{any}', 'v1\ApiController@handleCors')->where('any', '.*'); 这将转到执行以下操作的函数: return response() ->json($data, $this->statusCode) ->header('Accept', '*/*')

在我的Laravel应用程序中,我已经设置了一条全天候路线来处理CORS的飞行前请求

Route::options('/{any}', 'v1\ApiController@handleCors')->where('any', '.*');
这将转到执行以下操作的函数:

return response()
            ->json($data, $this->statusCode)
            ->header('Accept', '*/*')
            ->header('Access-Control-Request-Headers', 'Content-Type, Authorization')
            ->header('Access-Control-Allow-Origin', 'https://frontend.myapp.com')
            ->header('Access-Control-Allow-Methods', 'GET, POST, DELETE, PUT, OPTIONS');
现在,当我使用
OPTIONS
请求调用一个路由时,我会得到所有的头。然后,我在终端中运行了以下命令:

curl -i -X OPTIONS -H "Origin: https://frontend.myapp.com" \
-H 'Access-Control-Request-Method: POST' \
-H 'Access-Control-Request-Headers: Content-Type, Authorization' \
"https://api.myapp.com/testingcors"
我得到以下回应:

HTTP/1.1 403 Forbidden
Server: nginx
Date: Mon, 28 Oct 2019 15:29:48 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: PHP/7.3.10
Cache-Control: no-cache, private

Origin not allowed%

当我让实际的前端与API对话时,它将抛出相同的错误。我做错了什么?

我认为CORS头通常应用于应用程序实例,而不是响应

//在应用程序中设置CORS头
标题('Access-Control-Request-Headers','X-Request-With,content-type');
标题('Access-Control-Allow-Origin','https://frontend.myapp.com');
标题('Access-Control-Allow-Methods'、'GET、POST、DELETE、PUT、OPTIONS');
//正常返回响应
return response()->json($data$this->statusCode);

总体思路应该是正确的。尝试将您的标题更改为我在上面更新的答案。我刚才把你的标题抄了一遍,以供参考。