AngularJS和跨域请求被阻止[关闭]

Posted

技术标签:

【中文标题】AngularJS和跨域请求被阻止[关闭]【英文标题】:AngularJS & Cross-Origin Request Blocked [closed] 【发布时间】:2014-11-10 06:53:43 【问题描述】:

有什么帮助吗? 当我尝试从服务器获取数据时显示此错误。 我的 Angular 应用程序在我的本地计算机中,数据库在我通过互联网连接到它的服务器中。

错误:跨域请求被阻止:同源策略不允许读取位于http://XXXXXXXX.com/XXXXx 的远程资源。这可以通过将资源移动到同一域或启用 CORS 来解决。

解决这个错误的步骤是什么??

【问题讨论】:

【参考方案1】:

这与 Angular JS 无关,您的浏览器(可能是 chrome)正在阻止跨源请求,您应该配置您的 Web 服务器以将您发送给它的本地路径重写为您的服务器路径。 示例 nginx 配置:

location /local_path 
    proxy_pass        server_path

    

在你的例子中:

location /homework 
    proxy_pass         http://XXXXXXXXXXXXX.com/XXXXXXX

    

【讨论】:

【参考方案2】:

这是因为在 chrome 等浏览器中,当您从 domain1.com 向 domain2.com 发起请求时,chrome 会自动创建一个 OPTIONS 请求来检查服务器是否允许 domain1.com 向 domain2.com 发送 HTTP 请求与否。

根据您的后端技术,您必须在您的服务器中启用 CORS(跨域资源共享)并将其配置为允许 domain1.com 访问它。

【讨论】:

【参考方案3】:

就像 Hassene 所说的,这不是 AngularJS 造成的。相反,浏览器会阻止您的 javascript 应用程序跨域边界发出请求。

要解决此问题,您应该在服务器响应中启用 Access-Control-Allow-Origin 标头。这比听起来容易得多,并且记录在许多不同的 Web 服务器here。

【讨论】:

【参考方案4】:

如果您想在开发过程中快速修复,请使用插件在浏览器中启用 CORS:plugin for Chrome。

详细了解 CORS here。然后阅读接受的答案here。

【讨论】:

以上是关于AngularJS和跨域请求被阻止[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS的弹性搜索——跨域请求被阻止

AngularJS 和跨域 POST

跨域请求在 Firefox 中被阻止

跨域请求被阻止 - 这可以通过启用 CORS 来解决

跨域请求被阻止:(原因:缺少 CORS 标头“Access-Control-Allow-Origin”)

不允许使用 CORS 使用 angularjs 进行跨域请求的 DELETE 请求