【问题标题】:Loading json file from url fails due to access control checks由于访问控制检查,从 url 加载 json 文件失败
【发布时间】:2020-06-14 08:13:39
【问题描述】:

我正在尝试将 json 加载到 javascript 文件中,如下所示:

$().ready(function () {
      var url = 'url/fname.json';

      $.get(url, function (data) {
        // can use 'data' in here...
        console.log(data)
      });
    });

但是,我收到错误消息“Access-Control-Allow-Origin 不允许使用 Origin null”和“[Error] XMLHttpRequest 由于访问控制检查而无法加载”。

其他人建议添加 Access-Control-Allow-Origin: <origin> | * (Safari 10.1: XMLHttpRequest with query parameters cannot load due to access control checks) 或 header('Access-Control-Allow-Origin: null'); (XmlHttpRequest error: Origin null is not allowed by Access-Control-Allow-Origin),但在该标题位于 html 文件中的那些帖子中没有得到答复。

添加此行是否可以解决我的问题?如果有,应该放在哪里?

【问题讨论】:

  • 那个头是给服务器端的,你不能在ajax请求中传递这个头。这不被允许。请参阅注释框中的this
  • Is adding this line the solution to my problem? 是的,您可能还需要额外的标题,具体取决于您的具体用途,但至少需要这个。 If so, where should I put it? 这将取决于您用于后端的技术,但作为一般答案,您需要将该标头添加到托管 url/fname.json 的服务器生成的“响应”中。即托管 url/fname.json 的服务器还必须设置 Access-Control-Allow-Origin: * 标头,说明任何人都可以请求该文件,即使请求来自不同的服务器/域
  • 如果您不拥有或无法访问托管 'url/fname.json' 的服务器,请告诉我们,我们可以提供替代解决方案

标签: javascript jquery


【解决方案1】:

似乎您正在尝试通过 ajax 访问跨域请求。为此,您必须在服务器端启用 CORS。

您可以在此处阅读有关 CORS 的更多信息。 https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-29
    • 2018-11-12
    • 2020-10-28
    • 1970-01-01
    • 2020-12-18
    • 1970-01-01
    • 2020-11-18
    • 1970-01-01
    相关资源
    最近更新 更多