我对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.
到目前为止,我已经尝试过:
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: *');
header('Access-Control-Allow-Headers: *');
最后出现相同的错误。我该怎么办?
编辑:
为什么它会自动将请求重定向到https而不是http。哪里出错了?请求网址应为http://test.com/api/test,而不是https://test.com/api/test
提前谢谢!
答案 0 :(得分:2)
我遇到了同样的问题,通过Middleware
解决了//App\Http\Middleware;
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');
}
不仅要注册您的中间件,还可以是本地(针对特定的路由)或全局的中间件。
注意!一些旧的浏览器不支持“ *”逻辑
答案 1 :(得分:0)
如果您使用的是Laravel 7.0,则已经内置了CORS功能
答案 2 :(得分:0)
您需要检查是否正在开发Outlook插件:
并遵循以下答案:middleware to solve cors
答案 3 :(得分:0)
在您的 Laravel 应用中尝试这种方式:
php artisan serve --host YOUR_LOCAL_IP
YOUR_LOCAL_IP
是你的ip,linux下可以用ifconfig
命令访问,windows下用ipconfig
命令访问。
最后你应该请求YOUR_LOCAL_IP:PORT/api
答案 4 :(得分:0)
我使用的是 Laravel 8
检查配置/cors.php
将路径数组更改为 * ('paths' => ['*'])