【问题标题】:Laravel 7 - No 'Access-Control-Allow-Origin' header is present on the requested resourceLaravel 7 - 请求的资源上没有“Access-Control-Allow-Origin”标头
【发布时间】:2020-08-24 00:14:58
【问题描述】:

我知道这是一个非常常见的问题,并且还有很多其他问题,但是,我不知道该怎么办了。我已经将我的 Laravel API 应用程序从 5.8 升级到了 7.10.3,现在我面临着这个以前没有发生过的 CORS 问题。 Laravel 7 已经提供了fruitcake/laravel-cors 包,这是我在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.

【问题讨论】:

    标签: php laravel vue.js cors laravel-7


    【解决方案1】:

    我在使用 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>
       })
    

    【讨论】:

    • 嗨卢卡斯!谢谢你的帮助!我已经发现了问题,请看下面的答案:)
    • 很高兴您发现了问题!
    【解决方案2】:

    我发现了问题:我的请求在 $request-&gt;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());
    }
    

    只需将$request-&gt;validate() 放在try 之前就可以了。请记住validate() 有自己的异常处理程序。

    我不知道这究竟为什么会导致 CORS 错误,但我认为这是因为它在 Access-Control-Allow-Origin 等之前发送了 headers

    【讨论】:

    • 不知道你在说什么。我在我的 vue + laravel 7 应用程序中遇到了同样的问题。我正在使用“离子图标”。当 home.vue 页面加载时,我收到此错误。字体图标不会加载。
    猜你喜欢
    • 2019-10-07
    • 2017-02-07
    • 2023-03-16
    • 2014-07-30
    • 2016-01-14
    • 2023-03-15
    • 2018-12-02
    • 2019-09-27
    • 2015-10-30
    相关资源
    最近更新 更多