XML Ajax请求上的请求资源上没有“Access-Control-Allow-Origin”标头

时间:2018-01-30 22:56:38

标签: javascript jquery ajax xml xmlhttprequest

从在线阅读中我得知,我试图做的事情可能是不可能的,但是,我想我会试试运气,看看这里是否有人可以帮助我处理我的问题。

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

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

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

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);
    }
});

1 个答案:

答案 0 :(得分:0)

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

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

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