尝试使用JIRA ReST API时,我一直收到以下CORS错误:
无法加载Fetch API https://jira.our-domain-name.com/jira/rest/api/2/search?jql=project=tcc%20and%20cf[10809]~8423362。 对预检请求的响应没有通过访问控制检查:否 '访问控制允许来源'标题出现在请求的上 资源。起源' https://application-url.our-domain-name.com'因此是不允许的 访问。如果不透明的响应满足您的需求,请设置请求 模式为' no-cors'在禁用CORS的情况下获取资源。
但是,当我将其直接粘贴到浏览器中,或通过Postman运行或从命令行使用CURL时,此搜索URL的工作率为100%。
我的应用正在使用javascript fetch
API调用API。我在发出GET请求时设置了以下标题:
headers: {
"content-type": "application/json",
"authorization": "Basic <<encrypted>>"
}
我已确保请求主机已在JIRA管理员中白化 - 我已使用白名单页面上的测试功能测试了主机。
当我将白名单从通配符更改为域名时,我突然得到了这个:
无法加载Fetch API https://jira.our-domain-name.com/jira/rest/api/2/search?jql=project=tcc%20and%20cf[10809]~8423362。 不允许请求标头字段授权 预检响应中的Access-Control-Allow-Headers。
有什么想法吗?
答案 0 :(得分:0)
您有2个选择。
最简单的方法是通过后端代理请求(如果可能的话),因为对浏览器中运行的JavaScript实施了CORS限制。
另一种方式是reconfigure the Tomcat server运行Jira以支持发送CORS标头。 如果操作不当,可能还会带来其他安全隐患。