Я вызываю JIRA REST API из JavaScript в Mac пользователя слияния и сталкиваюсь с проблемами CORS, потому что JIRA и Confluence находятся на двух разных доменах и preflight request из браузера не работает. Я пробовал несколько решений CORS, как описано ниже, без каких-либо успехов. Поэтому я умоляю внести некоторые вклад от других, которые, вероятно, решили эту проблему.Включить CORS в API JARA REST
JavaScript фрагмент кода, который не удается:
AJS.$.ajax({
type: "GET",
url: "http://jira.mydomain.com/rest/api/latest/search/?jql=issue%20in%20linkedIssues(SR-45)",
dataType: "json",
contentType: "application/json",
async: false
})
Сообщение об ошибке (с Firefox):
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://jira.mydomain.com/rest/api/latest/search/?jql=issue%20in%20linkedIssues(SR-45). This can be fixed by moving the resource to the same domain or enabling CORS.
Конфигурация JIRA
- JIRA Версия: 6.4.12
- Адрес: http://jira.mydomain.com
- Запуск Apache в передней (прокси): Да
- Response Configuration Headers:
Access-Control-Allow-Headers:origin, content-type, accept
Access-Control-Allow-Methods:POST, GET, OPTIONS
Access-Control-Allow-Origin:*
- Response Configuration Headers:
- Confluence добавил к whitelist: Да
- Expression: Confluence (http://confluence.mydomain.com)
- Тип: Application Link
- Разрешить поступления: Правда
Слияние конфигурации
- Версия слияния: 5.8.8
- Адрес: http://confluence.mydomain.com
- Запуск Apache в передней (прокси): Да
- отклика Конфигурация Заголовки:
Access-Control-Allow-Origin:*
- отклика Конфигурация Заголовки:
- JIRA добавлены к whitelist: Да
- Expression: Confluence (http://jira.mydomain.com)
- Тип: Application Link
- Разрешить поступления: Правда
Протестировано с браузерами:
- Chrome (последний)
- Safari (последние)
- Firefox (последняя)
Testing предполетной запрос (ВАРИАНТЫ) с CURL:
ismar.slomic$ curl -X OPTIONS "http://jira.mydomain.com/rest/api/latest/search/?jql=issue%20in%20linkedIssues(SR-45)" -v
* Trying 10.107.1.24...
* Connected to jira.mydomain.com (127.0.0.1) port 80 (#0)
> OPTIONS /rest/api/latest/search/?jql=issue%20in%20linkedIssues(SR-45) HTTP/1.1
> Host: jira.mydomain.com
> User-Agent: curl/7.43.0
> Accept: */*
>
* Empty reply from server
* Connection #0 to host jira.mydomain.com left intact
curl: (52) Empty reply from server
Это, кажется, положительный ответ.
Testing предполетной запрос (ВАРИАНТЫ) с CROME расширением Postman:
OPTIONS http://jira.mydomain.com/rest/api/latest/search/?jql=issue%20in%20linkedIssues(SR-45)
ошибка Ответ: Could not get any response. This seems to be like an error connecting to http://jira.mydomain.com/rest/api/latest/search/?issue%20in%20linkedIssues(SR-45)
Получаете ли вы то же сообщение об ошибке, которое вы получили для Firefox в Chrome? – rby
Сообщение об ошибке в Chrome: NetworkError: не удалось выполнить 'send' on 'XMLHttpRequest': не удалось загрузить 'http://jira.mydomain.com/rest/api/latest/search/?jql=issue%20in%20linkedIssues. .. –
Похоже, что ваш вызов ajax не проходит. Возможно, вы можете добавить обратный вызов ошибки и посмотреть на статус, который вы получите.Кроме того, вы указываете json как dataType, поэтому убедитесь, что вы действительно отправляете json-данные. – rby