【问题标题】:JIRA REST API corsJIRA 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:*”的标头指令

标签: rest cors jira


【解决方案1】:

你有两个选择。

最简单的方法是通过后端代理您的请求(如果可能的话),因为 CORS 限制是对在浏览器中运行的 JavaScript 实施的。

另一种方式是 reconfigure the Tomcat server 运行 Jira 以支持发送 CORS 标头。 如果操作不当,可能会产生其他安全隐患。

【讨论】:

    猜你喜欢
    • 2016-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-22
    • 2017-05-01
    • 2017-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多