XMLHttpRequest Origin null不被允许访问文件:///到文件:///(无服务器)的Access-Control-Allow-Origin。
XMLHttpRequest Origin null不被允许访问文件:///到文件:///(无服务器)的Access-Control-Allow-Origin。
我正在尝试创建一个可以通过启动其索引文件进行本地下载和运行的网站。
所有文件都是本地的,没有使用在线资源。
当我尝试使用jQuery的AJAXSLT插件来处理一个带有XSL模板的XML文件(在子目录中)时,我收到以下错误:
XMLHttpRequest无法加载file:///C:/path/to/XSL%20Website/data/home.xml。源null不被Access-Control-Allow-Origin允许。
XMLHttpRequest无法加载file:///C:/path/to/XSL%20Website/assets/xsl/main.xsl。源null不被Access-Control-Allow-Origin允许。
发出请求的索引文件是file:///C:/path/to/XSL%20Website/index.html
,而所使用的JavaScript文件存储在file:///C:/path/to/XSL%20Website/assets/js/
中。
我该如何才能解决这个问题?
基本上,唯一的处理方法是在本地主机上运行一个web服务器,并从那里提供它们。
允许ajax请求访问计算机上的任何文件对于浏览器来说是不安全的,因此大多数浏览器似乎将“file://”请求视为没有起源目的的“同一源政策”。
启动web服务器可能就像cd
进入文件所在的目录,并运行:
python -m http.server
[编辑 感谢@alextercete, 指出它已更新为Python3]
在无法运行本地 Web 服务器的情况下,你可以通过浏览器开关允许 Chrome 访问 file://
文件。在查找了一些资料后,我找到了这个讨论,其中提到了一个浏览器开关。用以下命令启动 Chrome 实例:
chrome.exe --allow-file-access-from-files
这在开发环境中或许是可以接受的,但在其他情况下则不应使用这个方式。你肯定不希望一直开着这个开关。截至 2011 年 1 月,这仍然是一个 unresolved 的问题。