JIRA REST API cors
Posted
技术标签:
【中文标题】JIRA REST API cors【英文标题】: 【发布时间】:2017-03-05 05:32:46 【问题描述】:我在尝试使用 JIRA ReST API 时不断收到以下 CORS 错误:
Fetch API 无法加载 https://jira.our-domain-name.com/jira/rest/api/2/search?jql=project=tcc%20and%20cf[10809]~8423362。 对预检请求的响应未通过访问控制检查:否 请求中存在“Access-Control-Allow-Origin”标头 资源。因此不允许使用原点“https://application-url.our-domain-name.com” 使用权。如果不透明的响应满足您的需求,请设置请求的 模式为“no-cors”以获取禁用 CORS 的资源。
但是,当我将它直接粘贴到浏览器中,或者通过 Postman 运行它,或者从命令行使用 CURL 时,这个搜索 URL 可以 100% 工作。
我的应用正在调用 API,使用 javascript fetch
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。
有什么想法吗?
【问题讨论】:
我不是 JIRA 专家,但我遇到了类似的问题。您需要重新配置 JIRA 以允许 CORS 访问。仅仅将您的域列入白名单是不够的。如果您查看浏览器的网络历史记录,您会看到 XHR 首先向 JIRA 发送一个 OPTIONS 请求,该响应显然没有产生预期的权限。不过,我不知道如何在 JIRA 中修复它。 我已经浏览了每一个 JIRA 配置选项,并且没有任何特定于 CORS 的内容。他们只引用 CORS,在我设置的白名单上设置“允许传入”。我已经尝试了白名单类型中可用的所有选项,但没有成功。 我现在什至尝试在我的应用 URL 和 JIRA 之间创建一个应用程序链接,但仍然遇到相同的 CORS 错误。 还尝试使用基于 cookie 的身份验证,而不是基本身份验证。同样,在 CuRL 和 Postman 中工作,而不是从浏览器中工作。 我感受到了你的沮丧,因为那时我也一样。也许您对处理对您的 JIRA 应用程序的请求的网络服务器具有管理访问权限。在适当的服务器配置文件中,您可以设置将产生响应标头“Access-Control-Allow-Origin:*”的标头指令 【参考方案1】:你有两个选择。
最简单的方法是通过后端代理您的请求(如果可能的话),因为 CORS 限制是对在浏览器中运行的 JavaScript 实施的。
另一种方式是 reconfigure the Tomcat server 运行 Jira 以支持发送 CORS 标头。 如果操作不当,可能会产生其他安全隐患。
【讨论】:
以上是关于JIRA REST API cors的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 JIRA Cloud REST API 创建对 jira 问题的内部评论
SonarQube 无法使用 REST API 连接到 JIRA 7