跨域请求本地文件
Posted
技术标签:
【中文标题】跨域请求本地文件【英文标题】:Cross-origin request for local file 【发布时间】:2017-09-15 12:59:15 【问题描述】:我需要在浏览器中打开一个本地 html 文件。 javascript 工作正常,但 ajax 停止工作,并且 XMLHttpRequest 给出了跨源错误。有没有办法从本地目录运行 ajax。我有必要只从本地文件运行它。
谢谢
【问题讨论】:
XmlHttpRequest error: Origin null is not allowed by Access-Control-Allow-Origin的可能重复 【参考方案1】:如果您使用的是 chrome,请尝试this extension
CORS 允许一个域上的 Web 应用程序向另一个域发出跨域 AJAX 请求。启用它非常简单,只需要服务器发送一个响应头。
这个扩展的作用是添加到响应头规则 - Access-Control-Allow-Origin: *
您也可以通过发送响应标头手动执行此操作。
对于简单的 CORS 请求,服务器只需要在其响应中添加以下标头:
Access-Control-Allow-Origin: *
阅读this了解更多信息。
【讨论】:
其实我用的是android webview。 您也可以手动操作,服务器只需在响应中添加Access-Control-Allow-Origin: *
标头即可。
看不出来,怎么回答问题的。【参考方案2】:
对于任何想知道的人,我必须在应用程序中运行一个服务器来提供 js 文件。似乎不运行服务器就不可能做到这一点。 如果有人知道另一种方法,请告诉。
【讨论】:
一些关于这意味着什么以及如何做的参考会有所帮助。【参考方案3】:如果您能够更改服务器代码,您可以尝试将字符串“null”添加到允许的来源。在 Chrome 中,如果它从本地文件运行,它会将源发送为“null”。
这是一个在 ASP.NET Core 中设置“null”原点的示例:
services.AddCors(options =>
options.AddPolicy("InsecurePolicy",
builder => builder
.WithOrigins("null")
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
);
请注意,这是not recommended,但如果您只是在开发过程中需要它,它可能就足够了。
【讨论】:
【参考方案4】:在 Firefox 中实现此功能的最简单方法是导航到 about:config,查找 privacy.file_unique_origin
setting 并将其关闭。
本质上,Firefox 曾经将来自同一目录的本地文件视为来自同一来源,因此 CORS 很满意。在发现 CVE-2019-11730 后,这种行为发生了变化。
它在 Arch 上的 84.0.1 上运行良好。不本地调试的时候一定要关掉。
Source
【讨论】:
我不建议打开和关闭它。接受的答案是处理此问题的正确方法【参考方案5】:如果您使用的是 VS Code,Live Server 扩展可能会对您有所帮助。它解决了我在编辑网页时遇到的跨域问题。
https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer
【讨论】:
以上是关于跨域请求本地文件的主要内容,如果未能解决你的问题,请参考以下文章