本地文件的跨源请求

时间:2017-04-19 10:37:59

标签: javascript xmlhttprequest cross-domain local-files

我需要在浏览器中打开本地html文件。 javascript工作正常,但ajax停止工作,XMLHttpRequest给出了交叉原始错误。有没有办法从本地目录运行ajax。我必须只从本地文件运行。

由于

5 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

本质上,Firefox 过去常常将来自同一目录的本地文件视为来自同一来源,因此 CORS 很高兴。这种行为在 CVE-2019-11730 被发现后发生了变化。

它在 Arch 上的 84.0.1 上运行良好。非本地调试时,请务必将其关闭。

Source

答案 2 :(得分:0)

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

这是ASP.NET Core中用于设置“空”来源的示例:

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

请注意,这是not recommended,但如果在开发过程中只需要它,可能就足够了。

答案 3 :(得分:0)

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

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

答案 4 :(得分:-1)

如果您使用的是Chrome,请尝试this extension

  

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

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

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

  

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

阅读this了解详情。