Firefox扩展应用RESTClient如何避免CORS?

时间:2012-07-08 06:13:28

标签: javascript jquery xmlhttprequest google-closure

我正在尝试发出一个简单的POST请求,但我仍然没有成功。

标题从

更改
  

编码:UTF-8 Http-Method:POST Content-Type:   应用程序/ x-WWW窗体-urlencoded;字符集= UTF-8

  

Http-Method:OPTIONS    内容类型:

据我所知,当我尝试使用Google Closure XhrIo访问我的服务器时,会导致预检并导致我的POST请求失败。

但是Firefox extension app RESTClient以及类似的Chrome应用也可以使用XMLHttpRequest进行访问,但它们不会导致预检。怎么样和为什么?

PS:我不是JS专业人员而且我无法理解此代码http://code.google.com/p/restclient/source/browse/extension/chrome/content/restclient.js的复杂性。

任何帮助表示赞赏

埃迪。

1 个答案:

答案 0 :(得分:0)

HTML5Rocks.com

上找到了这条有价值的信息

来自CHROME EXTENSIONS的交叉域

Chrome扩展程序以两种不同的方式支持跨域请求:

在manifest.json中包含域 - 如果域名包含在manifest.json文件的“权限”部分中,则Chrome扩展程序可以向任何域发出跨域请求: “permissions”:[“http://*.html5rocks.com”]服务器不需要包含任何额外的CORS标头,也不需要再做任何工作以使请求成功。

CORS请求 - 如果域不在manifest.json文件中,则Chrome扩展程序会生成标准的CORS请求。 Origin标头的值是“chrome-extension:// [CHROME EXTENSION ID]”。这意味着来自Chrome扩展程序的请求必须符合本文中所述的相同CORS规则。