【问题标题】:CORS implementation IN JavascriptJavascript 中的 CORS 实现
【发布时间】:2014-09-01 15:55:12
【问题描述】:

我想访问放置在其他服务器中的资源。我想从 javascript 访问它,我尝试按照教程 here 实现 CORS。但是没有得到如何使用 Access-Control-Allow-Origin 标头配置其他服务器,所以浏览器仍然不允许访问。然后我尝试为 chrome 安装 CORS 扩展,它可以工作,但是 chrome 扩展的问题是,如果我从同一服务器访问任何资源,网页被提升,我会收到这个错误:'Access-Control-Allow- Origin' 标头包含多个值,但只允许一个值。 Origin _ ,因此不允许访问。

如果 chrome 扩展跨域资源访问有效但来自同一域的访问失败。 我想通过代码实现 CORS,而不是扩展。

【问题讨论】:

  • 其他服务器在它发送的响应中是否也有 CORS 标头?您可以从 Chrome 的开发者工具网络标签中检查。
  • 在 javascript 中我已经提出了所需的 CORSrequest ,但是在其他服务器上有 wamp ,我无法弄清楚在哪里添加以下行: Header set Access-Control-Allow-Origin "*" .是 httpd.conf 还是任何其他文件,我已将其添加到 中,但是当我尝试请求时,仍然出现错误:请求的资源上不存在“Access-Control-Allow-Origin”标头。
  • 通过使用 chrome 的 CORS 扩展,无需对其他服务器进行任何配置更改,我得到响应。

标签: javascript cors


【解决方案1】:

有两种方法:

  1. 在 chrome 中添加 chrome 扩展 CORS ,然后如果你尝试进行跨域 XMLHTTPRequest ,浏览器不会报错,它会加载跨域资源。

  2. 如果你不想扩展,另一种方法是配置跨域服务器。下面是wamp服务器的过程

    • 打开文件 apache/conf/httpd.conf 并取消注释以下行:

    LoadModule headers_module modules/mod_headers.so

    • 在“目录”标签下添加以下行

      <IfModule mod_headers.c> Header set Access-Control-Allow-Origin "*" </IfModule>

    如果您想允许来自所有服务器的跨域,请使用 *,否则请明确指定服务器的名称。 现在保存 httpd.conf 文件并重新启动 wamp 服务器。

【讨论】:

    【解决方案2】:

    除了@Bhupendra 提到的两个选项之外,您还可以运行代理。代理在您的浏览器和 实际 服务器之间运行,并动态添加标头。对于开发来说,这是一个完美的解决方案。

    我用过的两个节点项目:

    您将需要 node.js 和 npm。

    【讨论】:

      猜你喜欢
      • 2017-03-13
      • 2014-10-15
      • 1970-01-01
      • 2018-05-25
      • 2014-04-17
      • 2022-01-10
      相关资源
      最近更新 更多