簡體   English   中英

Laravel 7 - 沒有“訪問控制允許來源” header 存在於請求的資源上

[英]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,

基本上每個originheadersmethods都是允許的。 我什至嘗試將這些行添加到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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM