我尝试使用以下代码从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标题 '访问控制允许来源'丢失)。
以下响应标题(状态: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文档,他们可以插入和播放而无需设置自己的服务器......
答案 0 :(得分:0)
当服务器的响应不允许您这样做时,您无法建立cors连接(这意味着服务器必须在其Access-Control-Allow-Origin标头中为您的源提供服务)。
JSONP还需要在服务器端完成一些工作。如果服务器使用JSON进行响应,那么您可以尝试在this的帮助下使用JSONP。如果它不起作用,你必须使用自己的服务器代理站点之间的连接。