CORS 适用于 plnkr,但不适用于浏览器:“响应具有 HTTP 状态代码 403”

Posted

技术标签:

【中文标题】CORS 适用于 plnkr,但不适用于浏览器:“响应具有 HTTP 状态代码 403”【英文标题】:CORS works on plnkr, but not from browser: "The response had HTTP status code 403" 【发布时间】:2015-10-24 08:46:18 【问题描述】:

您好,我一直在 plnkr 上开发 angularjs 应用程序,我正在将数据从远程服务器提取到应用程序。最初,由于 CORS 问题和跨域限制,我在访问 xml 文件时遇到问题,但我启用了 CORS。该应用程序现在可以在 plnkr 上运行,但是当我尝试在浏览器上运行它时,控制台给了我同样的错误,除了最后有一个额外的注释。

错误:

`XMLHttpRequest cannot load http://50.22.49.237:8084/XMLFiles/ReformatedSample.xml. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. The response had HTTP status code 403.`

“响应具有 HTTP 状态代码 403”位似乎是新的。这是怎么回事?为什么它适用于 plnkr 而不是浏览器?我需要做什么来修复它?任何帮助表示赞赏。

编辑:问题出在我的浏览器上——谷歌浏览器有一个网络安全功能,除非我禁用它,否则我无法打开该应用程序。我在禁用版本的浏览器中对其进行了测试,它可以工作,但现在我无法在我的网站上托管这些文件,因为如果启用了网络安全,用户将无法看到该应用程序。我该如何解决这个问题?

【问题讨论】:

那是你的服务器在 50.22.49.237 吗?是 nginx 还是 apache 服务器 同事的服务器,是apache服务器 【参考方案1】:

这是您的网络浏览器确保的安全措施,您可以阅读它here

您可以通过将此命令添加到服务路由目录中的 .htaccess 文件来解决此问题:

<FilesMatch "\.(php)$">
  <IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
  </IfModule>
</FilesMatch>

或者,您可以将其添加到您的 HTTP 响应标头中。

【讨论】:

以上是关于CORS 适用于 plnkr,但不适用于浏览器:“响应具有 HTTP 状态代码 403”的主要内容,如果未能解决你的问题,请参考以下文章

使用 CORS 与 LocomotiveJs 一起休息 API。适用于本地机器,但不适用于 Amazon 或 Heroku

Angular CORS 适用于 GET 但不适用于 DELETE

CORS 问题:C# API 请求适用于一个域,但不适用于另一个域

Amazon S3 CORS 适用于 HTTP,但不适用于 HTTPS

Go Restful API:CORS 配置适用于 React 但不适用于 Angular

CORS 中间件适用于 app.get 但不适用于 app.post