【问题标题】:Cross-origin request for local file跨域请求本地文件
【发布时间】:2017-09-15 12:59:15
【问题描述】:

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

谢谢

【问题讨论】:

标签: javascript xmlhttprequest cross-domain local-files


【解决方案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_originsetting 并将其关闭。

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

    它在 Arch 上的 84.0.1 上运行良好。不本地调试的时候一定要关掉。

    Source

    【讨论】:

    • 我不建议打开和关闭它。接受的答案是处理此问题的正确方法
    【解决方案5】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-09-20
      • 2012-02-08
      • 2021-12-19
      • 1970-01-01
      • 2016-06-24
      • 2012-02-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多