我正在使用JIRA的API获取有关错误的一些信息。这是我用来获取它的jQuery的示例:
var endpoint = 'https://jira.cyanogenmod.org/rest/api/latest/issue/CYAN-2631';
$.get(endpoint, function(data) {
do_stuff(data, data['fields']['project']['self']);
});
,而且我得到了越来越多的Access-Control-Allow-Origin
错误。看起来这样:
XMLHttpRequest cannot load
https://jira.cyanogenmod.org/rest/api/latest/issue/CYAN-2631.
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://127.0.0.1:8000' is therefore not allowed access.
如果可能的话,我真的很想使用此API。遵循这个问题的指示无济于事。我有另一个错误,
GET https://jira.cyanogenmod.org/rest/api/latest/issue/CYAN-2631callback=jQuery172039181585889309645_1431307158851?_=1431307165515
似乎是一个错误的错误,所以我认为这不是正确的方法。也许服务器不允许jsonp
。
无论如何,是否有人可以解决这个问题,还是我不使用此特定的API?谢谢
没有外部代码的浏览器完全启用交叉原点请求。如果有的话,它首先将完全击败安全保护的目的。
使用浏览器时,是服务器决定是否要支持交叉原点请求以及它想要支持的请求的哪些域。您无法绕过客户端。
选择是:
- 服务器使CORS可以从您的域或所有域中访问。
- 服务器支持JSONP,允许您使用它来围绕交叉来源访问。
- 您可以创建自己的服务器代理,其中从浏览器向自己的服务器提出请求(该请求是相同的Origin或启用CORS),然后您自己的服务器从另一个站点获取数据并将其返回到浏览器。服务器不受与浏览器中内置的安全功能相同的来源限制的限制。
- 您找到了一些第三方代理服务,您可以使用这些服务,以达到与选项#3相同的目的。
fyi,Google搜索发布了有关在API上启用COR的文章:https://answers.atlassian.com/questions/69356/cross-origin-origin-resource-resource-sharing-with-jira-jira-rest-rest-rest-ap-api-and-an--javascript。我对服务的理解不足以完全遵循这篇文章,但也许它将您指向有用的方向。
h-i,简短答案是"是"。
中等答案是"在您的应用程序服务器上启用CORS"
漫长的答案在这里:http://enable-cors.org/
在某个时候,您会遇到"飞行前请求"的概念,您可能会感到困惑。
那是因为它令人困惑,愚蠢且工程不佳。继续前进。
启用COR的最简单方法是在您的Web服务器(NGINX或APACHE),尽管您可以在应用程序本身中启用它。
http://enable-cors.org/网站列表各种Web服务器和应用程序堆栈的配置。
祝你好运!