当URL被复制到地址栏时,GET工作,但不能通过AJAX

时间:2015-08-31 14:09:56

标签: javascript jquery ajax rest

我有一系列端点,供应商的应用程序已向我开放以获取文件。如果我将这些端点输入到浏览器的地址栏中,则会打开该文件,但如果我尝试通过jQuery AJAX获取它们,则会因为跨源错误而失败(No' Access-Control-Allow-Origin& #39;标头出现在请求的资源上。因此,不允许来源{' http://mydomain'。供应商应用程序REST Web服务不支持CORS。这是我的AJAX电话:

$.ajax({
    url: "http://vendorrestwebservice/endpoint",
    type: "GET",
    success: function (result) {
    console.log("downloaded file");
  },
  error: function (error) {
    console.log("Failed to download file!");
  }
});

为什么文件在粘贴到地址栏时会打开,而不是在通过我的GET请求调用时打开?

1 个答案:

答案 0 :(得分:5)

API需要允许您的域通过ajax(来自其他域)访问它。

直接从浏览器访问时,您所在的域名正确...:)

您可以尝试代理这样的ajax调用:

对您的服务器进行ajax调用 - >您的服务器调用api然后返回数据

或者您可以尝试使用JSONP。 Basic example of using .ajax() with JSONP?