![](/img/trans.png)
[英]Error: No 'Access-Control-Allow-Origin' header is present on the requested resource
[英]Laravel 7 - No 'Access-Control-Allow-Origin' header is present on the requested resource
我知道這是一個非常普遍的問題,還有很多其他問題,但是,我不知道該怎么辦了。 我已經將我的 Laravel API 應用程序從5.8
升級到了7.10.3
,現在我面臨着這個以前沒有發生過的CORS
問題。 Laravel 7 已經提供了fruitcake/laravel-cors
package,這是我在config/cors.php
中的配置(默認配置):
'paths' => ['api/*'],
'allowed_methods' => ['*'],
'allowed_origins' => ['*'],
'allowed_origins_patterns' => [],
'allowed_headers' => ['*'],
'exposed_headers' => [],
'max_age' => 0,
'supports_credentials' => false,
基本上每個origin
, headers
和methods
都是允許的。 我什至嘗試將這些行添加到bootstrap/app.php
但它不起作用:
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: *');
header('Access-Control-Allow-Headers: *');
我的前端是用VueCli 3
構建的,我沒有對其進行任何更改,只是升級了 Laravel 版本。
POSTMAN
上的請求工作正常。 有誰知道為什么會發生這個問題?
完整的錯誤信息:
Access to XMLHttpRequest at 'http://127.0.0.1:8000/api/operacao/cadastrar' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
我發現了問題:我的請求在$request->validate()
方法中失敗,它位於帶有自定義異常處理程序的try / catch
塊中,如下所示:
try {
$request->validate(array(...)); //validation was failing
//code...
} catch (\Exception $e) {
//This was the problem
http_response_code(400);
die($e->getMessage());
}
只需在try
之前$request->validate()
。 只要記住validate()
有它自己的異常處理程序。
我不知道為什么這會導致 CORS 錯誤,但我認為這是因為它在Access-Control-Allow-Origin
等之前發送了headers
。
我在使用 REACT 時遇到了類似的問題,我的解決方案是添加標題並像這樣格式化我的請求。
axios.request({
method: "POST",
url: '<url>',
data: data,
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
})
.then(function (response) {
<what to do if works>
})
.catch((response) => {
<what to do if it doesn't work>
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.