如何解决访问幼年路径时的CORS错误

2022-04-12 00:00:00 cors outlook php laravel outlook-addin

我对laravel应用程序非常陌生。我想做的是开发一个使用laravel编写的API的Outlook Web插件。这里的问题是,它在通过Outlook邮件访问API时生成CORS错误。

错误:

Access to XMLHttpRequest at 'https://test.com/api/test' from origin 'https://localhost:44377' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

到目前为止我尝试的内容:

  • 已安装并试用了spatia/laravel-cors模块
  • 在bootstrap/app.php中添加了以下内容:
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: *');
header('Access-Control-Allow-Headers: *');
  • 创建CORS类文件并添加为中间件

并最终以相同的错误结束。我该怎么办?

编辑:

为什么会自动将请求重定向到Https而不是http,哪里出了问题?请求URL应该是http://test.com/api/test,而不是https://test.com/api/test

提前谢谢!


解决方案

我也遇到了同样的问题,通过Middleware

解决了

Define your custom middleware

//AppHttpMiddleware;

public function handle($request, Closure $next)
{
    return $next($request)
        ->header('Access-Control-Allow-Origin', '*')
        ->header('Access-Control-Allow-Methods', '*')
        ->header('Access-Control-Allow-Credentials', true)
        ->header('Access-Control-Allow-Headers', 'X-Requested-With,Content-Type,X-Token-Auth,Authorization')
        ->header('Accept', 'application/json');
}

只需注册您的中间件、本地(特定路由)或全局。

How to register Middleware

注意!一些旧浏览器不支持‘*’逻辑

相关文章