13

我需要在浏览器中打开一个本地 html 文件。javascript 工作正常,但 ajax 停止工作,并且 XMLHttpRequest 给出了跨源错误。有没有办法从本地目录运行 ajax。我有必要只从本地文件运行它。

谢谢

4

5 回答 5

11

对于任何想知道的人,我必须在应用程序中运行一个服务器来提供 js 文件。似乎不运行服务器就不可能做到这一点。如果有人知道另一种方式,请告诉。

于 2018-01-28T14:14:03.790 回答
3

在 Firefox 中实现此功能的最简单方法是导航到 about:config,查找privacy.file_unique_origin设置并将其关闭。

本质上,Firefox 曾经将来自同一目录的本地文件视为来自同一来源,因此 CORS 很满意。在发现CVE-2019-11730后,这种行为发生了变化。

它在 Arch 上的 84.0.1 上运行良好。只要确保在非本地调试时将其关闭即可。

来源

于 2020-12-30T03:13:12.687 回答
1

如果您使用的是 VS Code,Live Server 扩展可能会对您有所帮助。它解决了我在编辑网页时遇到的跨域问题。

https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer

于 2021-01-25T05:05:08.970 回答
0

如果您能够更改服务器代码,您可以尝试将字符串“null”添加到允许的来源。在 Chrome 中,如果它从本地文件运行,它会将源发送为“null”。

这是 ASP.NET Core 中用于设置“null”原点的示例:

services.AddCors(options =>
{
    options.AddPolicy("InsecurePolicy",
        builder => builder
            .WithOrigins("null")
            .AllowAnyMethod()
            .AllowAnyHeader()
            .AllowCredentials());
});

请注意,不建议这样做,但如果您只是在开发过程中需要它,可能就足够了。

于 2020-02-13T03:08:09.600 回答
-1

如果您使用的是 chrome,请尝试此扩展程序

CORS 允许一个域上的 Web 应用程序向另一个域发出跨域 AJAX 请求。启用它非常简单,只需要服务器发送一个响应头。

此扩展程序所做的是添加到响应标头规则 -Access-Control-Allow-Origin: *

您也可以通过发送响应标头手动执行此操作。

对于简单的 CORS 请求,服务器只需要在其响应中添加以下标头:Access-Control-Allow-Origin: *

阅读内容以获取更多信息。

于 2017-04-19T10:47:23.470 回答