Angular/Laravel CORS 问题:同源策略不允许读取远程资源
Posted
技术标签:
【中文标题】Angular/Laravel CORS 问题:同源策略不允许读取远程资源【英文标题】:Angular/Laravel CORS issue : The Same Origin Policy disallows reading the remote resource 【发布时间】:2016-01-10 08:14:01 【问题描述】:我在这个问题上苦苦挣扎了 5 个多小时。所以请帮忙:)
我的前端堆栈是 Angularjs
而我的后端堆栈是 LAMP
和 Laravel
框架。
我遇到的问题是,当我想在 ui-router
解析器中以 $http
服务作为依赖项发送 GET
请求时,firefox 会抛出错误:The Same Origin Policy disallows reading the remote resource
但我已经使用barryvdh/laravel-cors
包配置了我的后端,以便使用它的中间件来设置正确的标头。
Angular 代码 sn-p:
$http.post('http://example.com', data)
.then(function (data, status, headers, config)
,
function (data, status, headers, config)
);
Laravel 代码 sn-p :
//controller constructor
public function __construct()
//parent::__construct();
$this->middleware('cors');
很简单很正常的代码,不知道为什么不行。
这是我的 HTTP 请求/响应日志:
我不知道为什么 CORS 标头不存在,尽管它们存在于服务器日志中。
【问题讨论】:
我们需要查看来自服务器的 HTTP 响应以获取更多信息。 我会在发出此请求的页面上检查 access-control-allow-origin 标头。我曾经遇到过这个问题,我通过将发出 get 请求的代码移动到服务器来解决它。 检查预检 OPTIONS 请求中的标头并确保 OPTIONS 得到尊重 @charlietfl 更新问题 我不知道 laravel 但没有访问控制标头。纯php解决方案见***.com/a/9866124/1175966 【参考方案1】:您必须检查您的服务器是否发送该标头: 访问控制允许来源“*”
如果您的服务器不发送它,您的浏览器将在打开与另一个域的连接时失败。
如果您正在使用 grunt,您还有一个选择是使用 grunt-connect-proxy 插件。
检查此链接。 http://www.hierax.org/2014/01/grunt-proxy-setup-for-yeoman.html
【讨论】:
嗯...一样!您的服务器不发送 Access-Control-Allow-Origin。该选项是在服务器上配置的,您可以使用 php 发送该标头,但是...似乎不起作用。配置您的服务器以发送该标头,或使用代理来解决它。以上是关于Angular/Laravel CORS 问题:同源策略不允许读取远程资源的主要内容,如果未能解决你的问题,请参考以下文章
Yammer REST API - 如何从不同来源 (CORS) 获取数据?
Set-cookie 不适用于 Dot net Core 3.1 中的跨站点请求/响应和 React 设置同站点 cookie 和/或 CORS 问题