【问题标题】:Cross Origin API Request using Javascript?使用 Javascript 的跨域 API 请求?
【发布时间】:2016-08-14 19:50:14
【问题描述】:

我正在尝试使用以下代码从 API 中提取数据并在 Firefox 上的 HTML 页面中运行它:

var xobj = new XMLHttpRequest();
xobj.overrideMimeType("application/json");
url = 'https://xxxx.xxx?p=api';
xobj.open('GET', url, true);
xobj.onreadystatechange = function () {
      if (xobj.readyState == 4 && xobj.status == "200")
        parsedjson = xobj.responseText;
        parsedjson = JSON.parse(parsedjson);

但我收到以下错误:

跨域请求被阻止:同源策略不允许读取 https://xxxx.xxx?p=api 的远程资源。 (原因:CORS 标头 'Access-Control-Allow-Origin' 缺失)。

以及以下响应标头(状态:302):

Cache-Control: private
Content-Length: 502
Content-Type: text/html; charset=utf-8
Date: <Scrubbed>
Location: https://xxxx.xxx?p=api&additionalparameter=data
Server: <Scrubbed>
Set-Cookie: value: path=/; secure; HttpOnly
<Scrubbed>
X-AspNet-Version: <Scrubbed>
X-Frame-Options: SAMEORIGIN
X-Powered-By: ASP.NET
X-UA-Compatible: IE=edge
x-href: <Scrubbed>

知道请求标头包含以下内容可能很有用:

Origin: null

我已经阅读了有关 JSONP 和 CORS 的信息 - 但不确定哪些适用于此,以及如何使用。我将如何更新我的代码以获取数据?请注意,我对服务器没有任何控制权,但是如果我通过浏览器访问,我可以访问数据。

我还读到一个选项是设置我自己的小型服务器。这可能行得通,但这个项目的要求是使其成为客户端(这样我就可以与其他人共享 js/html 文档,他们可以即插即用,而无需设置自己的服务器......

【问题讨论】:

标签: javascript cors jsonp


【解决方案1】:

当服务器的响应不允许您这样做时,您无法建立 cors 连接(这意味着服务器必须在其 Access-Control-Allow-Origin 标头中为您的源提供服务)。

JSONP 还需要在服务器端完成一些工作。如果服务器使用 JSON 响应,那么您可以在 this 的帮助下尝试使用 JSONP。如果还是不行,就得用自己的服务器代理站点之间的连接了。

【讨论】:

    猜你喜欢
    • 2019-04-02
    • 1970-01-01
    • 2021-07-18
    • 2013-09-12
    • 1970-01-01
    • 2011-05-26
    • 2015-06-22
    • 2012-02-26
    • 2016-09-19
    相关资源
    最近更新 更多