CORS标头有两种方式来表示应允许跨域XHR:
- 发送
Access-Control-Allow-Origin: *
(允许所有主机) - 将您要允许的主机放在
Origin
后端的标头中
至于
file://URL,它们将产生一个不能通过第二个选项( echo-back )授权的 空值 。
Origin__
至于提到的:
跨域策略不适用于PhoneGap(出于各种原因,基本上是因为您的应用实质上是在设备上的file:// URI上运行)。
请注意,您必须为应用程序设置白名单才能访问这些外部域。
至于 Chrome 问题,可以在开发者控制台中看到:
Failed to load resource: net::ERR_FILE_NOT_FOUND file:///C:/2.html
XMLHttpRequest cannot load file:///C:/2.html. Received an invalid response.Origin 'null' is therefore not allowed access.
关于Chromium项目的问题跟踪器#40787进行了讨论。他们将问题标记为无法解决, 因为这种行为是设计使然。
提出了一种解决方法,仅出于开发目的而直接关闭Chrome中的CORS,然后使用
--allow-file-access-from-files--disable-web-security
例如,对于Windows
`C:UsersYOUR_USERAppDataLocalGoogleChromeApplicationchrome.exe --allow-file-access-from-files --disable-web-security`
这是与Cordova相关的更多答案:
- CORS和phonegap应用
- Apache Cordova中的域白名单 -一种控制对外部域的访问的安全模型。
检查这些资源以获取有关CORS的更多信息:
- 不错的CORS教程:http://www.html5rocks.com/en/tutorials/cors/
- 解决原产地政策
- HTTP访问控制(CORS)(Mozilla)
另请检查浏览器对CORS的支持:
- http://caniuse.com/#feat=cors
并记录在W3C上的正式CORS规范 :)



