【问题标题】:No 'Access-Control-Allow-Origin' header is present on the requested resource on XML Ajax RequestXML Ajax 请求的请求资源上不存在“Access-Control-Allow-Origin”标头
【发布时间】:2018-07-09 22:53:32
【问题描述】:

通过在线阅读,我了解到我正在尝试做的事情可能无法实现,但是,我想我会试试运气,看看这里是否有人可以帮助我解决我的问题。

我正在尝试从 opendata 网站获取 XML 数据,以获取我所在地区的火车信息。 https://www.opendatani.gov.uk/dataset/real-time-rail-stations-arrivals-and-departures

该网站全是关于 opendata 的事实让我相信我可以轻松提取这些数据。我错了!

从上面的链接中,您可以看到一个链接来查看示例 XML 响应。文件名就是站索引。

https://apis.opendatani.gov.uk/translink/3042A7.xml

现在,如果我将上面的链接发布到邮递员,我会得到所需的数据,但如果我执行 AJAX 请求,则会收到以下错误。

Failed to load https://apis.opendatani.gov.uk/translink/3042A7.xml: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.

以下是我的 ajax 请求,我知道这可能是一个很长的镜头,但如果我遗漏了什么,我们将不胜感激。

$.ajax({
    type: "GET",
    url: "https://apis.opendatani.gov.uk/translink/3042A7.xml",
    ContentType: 'application/xml',
    success: function(result) {
        console.log(result);
    },
    error: function(xhr, textStatus, errorThrown) {
        console.log(xhr);
        console.log(textStatus);
        console.log(errorThrown);
    }
});

【问题讨论】:

  • 如果没有启用 CORS 的端点,则在您控制的服务器或第三方服务上使用代理

标签: javascript jquery ajax xml xmlhttprequest


【解决方案1】:

AJAX 请求只有在发送者和接收者的端口、协议和域相等时才可能。如果没有,ajax 调用可能会导致 CORS。

CORS 代表跨域资源共享,必须在服务器端支持。

您可以从您的服务器获取此文档及其数据并做您想做的事情(甚至可以在您的域中使用 ajax 调用访问该文档),但是您无法通过 ajax 调用从另一个域访问它或 iframe,如果他们不允许这样做。 好吧,有一些网络浏览器扩展可以启用和禁用它,但你不能要求每个人都安装和使用它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-11
    • 2013-11-29
    • 2014-07-28
    • 2014-01-19
    • 2013-12-07
    相关资源
    最近更新 更多