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 而我的后端堆栈是 LAMPLaravel 框架。

我遇到的问题是,当我想在 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 问题:同源策略不允许读取远程资源的主要内容,如果未能解决你的问题,请参考以下文章

从不同来源获取时 Expressjs cors 问题

Yammer REST API - 如何从不同来源 (CORS) 获取数据?

跨域-CORS

ajax跨域之CORS

Set-cookie 不适用于 Dot net Core 3.1 中的跨站点请求/响应和 React 设置同站点 cookie 和/或 CORS 问题

CORS (跨域资源共享)的漏洞