如何防止在Chrome中发送Origin HTTP标头?

时间:2017-05-17 14:13:00

标签: javascript ajax google-chrome http-headers cors

情况:

  1. 我有一个生产网络服务器,假设https://example.com,配置了CORS,允许来源有限。该集不包括localhost起源。
  2. 在localhost上,开发人员开发一个页面/模块/需要通过AJAX调用生产Web服务器的任何内容(即使在开发期间)。为此,他们使用CLI参数运行Chrome --disable-web-security --user-data-dir = chromeNoCors,以便Chrome发送没有Origin标头的AJAX。
  3. 问题是只发送没有标头的GET请求。 POST请求仍包含标头,因此生产服务器将标头值(http://localhost:5678)与允许的原始集进行比较,并禁止访问所请求的资源。
  4. 问题: 是否有可能以某种方式阻止发送Origin HTTP头?

    我知道有一种解决方法可以通过允许“localhost”(或开发人员必须添加到其/ etc / hosts的某些特定主机)到生产服务器上的允许来源集来解决这种情况但是我如果可能,请不要这样做。

2 个答案:

答案 0 :(得分:1)

如果你们使用chrome试试这个扩展程序 https://chrome.google.com/webstore/detail/requestly-redirect-url-mo/mdnleldcmiljblolnjhpnblkcekpdkpa

您可以动态修改请求,甚至是标题

答案 1 :(得分:0)

我建议您设置一个简单的“代理服务器”(短节点.js或python脚本就足够了)。让此服务器将所有请求转发到您的远程API服务器,但删除有关标头中的源的信息。这是一个简单的正则表达式问题。

这是一个简单的解决方案,可以移植到不同的服务器上。在AJAX方面,您只需要将主机名更改为测试代理服务器的localhost或IP。