我正在使用 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。按照此 question 上的说明进行操作没有帮助。我得到另一个错误,
GET https://jira.cyanogenmod.org/rest/api/latest/issue/CYAN-2631callback=jQuery172039181585889309645_1431307158851?_=1431307165515
似乎是 Jquery 错误,所以我认为这不是正确的方法。可能服务器不允许 jsonp
。
无论如何,有没有人有办法解决这个问题,或者我可以不使用这个特定的 API 吗?谢谢
最佳答案
没有外部代码,无法完全从浏览器启用跨源请求。如果有的话,它首先会完全破坏安全保护的目的。
使用浏览器时,由服务器决定它是否要支持跨源请求以及它要支持来自哪些域的请求。您无法在客户端中绕过它。
选择是:
- 服务器允许从您的域或所有域访问 COR。
- 服务器支持 JSONP,允许您使用它来解决跨源访问。
- 您创建自己的服务器代理,从浏览器向您自己的服务器发出请求(可能同源或启用 CORS),然后您自己的服务器从其他站点获取数据并将其返回给浏览器。服务器不受同源限制的限制,因为这是仅内置于浏览器中的安全功能。
- 您找到一些第三方代理服务,您可以使用它来实现与选项 #3 相同的目的。
仅供引用,Google 搜索显示了这篇关于在 API 上启用 CORS 的文章:https://answers.atlassian.com/questions/69356/cross-origin-resource-sharing-with-jira-rest-api-and-javascript .我对这项服务的了解还不够,无法完全遵循这篇文章,但也许它为您指明了一个有用的方向。
关于javascript - 有没有办法绕过 Access-Control-Allow-Origin?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30158415/