我需要在浏览器中打开一个本地 html 文件。javascript 工作正常,但 ajax 停止工作,并且 XMLHttpRequest 给出了跨源错误。有没有办法从本地目录运行 ajax。我有必要只从本地文件运行它。
谢谢
我需要在浏览器中打开一个本地 html 文件。javascript 工作正常,但 ajax 停止工作,并且 XMLHttpRequest 给出了跨源错误。有没有办法从本地目录运行 ajax。我有必要只从本地文件运行它。
谢谢
对于任何想知道的人,我必须在应用程序中运行一个服务器来提供 js 文件。似乎不运行服务器就不可能做到这一点。如果有人知道另一种方式,请告诉。
在 Firefox 中实现此功能的最简单方法是导航到 about:config,查找privacy.file_unique_origin
设置并将其关闭。
本质上,Firefox 曾经将来自同一目录的本地文件视为来自同一来源,因此 CORS 很满意。在发现CVE-2019-11730后,这种行为发生了变化。
它在 Arch 上的 84.0.1 上运行良好。只要确保在非本地调试时将其关闭即可。
如果您使用的是 VS Code,Live Server 扩展可能会对您有所帮助。它解决了我在编辑网页时遇到的跨域问题。
https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer
如果您能够更改服务器代码,您可以尝试将字符串“null”添加到允许的来源。在 Chrome 中,如果它从本地文件运行,它会将源发送为“null”。
这是 ASP.NET Core 中用于设置“null”原点的示例:
services.AddCors(options =>
{
options.AddPolicy("InsecurePolicy",
builder => builder
.WithOrigins("null")
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
});
请注意,不建议这样做,但如果您只是在开发过程中需要它,可能就足够了。