Мы используем JIRA 6.4.5 в нашей компании, но я пытаюсь извлечь данные из интерфейса API REST. Я пробовал сейчас последние пару дней, застрял в междоменной проблеме или что я не знаю учетных данных пользователя, поэтому я тоже не могу делать сервер.Как получить и отправить данные через jQuery из JIRA REST API?
Идеально у меня есть страница jQuery, где пользователь будет использовать свои собственные учетные данные/сеанс для запроса данных JIRA. API JIRA REST находится по адресу srv1.mydomain.xyz, и я использую srv2.mydomain.xyz как мой веб-сервер с моим кодом.
Я прочитал JIRA REST API Reference.
Я пробовал различные Javascript/Jquery вещи - в приведенном ниже примере я пытаюсь представить 1ч 30 мин к конкретной проблеме:
$.ajax({
url: "https://srv1.mydomain.xyz/rest/api/latest/issue/proj-3/worklog",
dataType: "json",
method: "post",
data: { time: "1h 30m",
comment: "Test" }
}).done(function(data) {
alert("Success");
}).fail(function(jqXHR, textStatus) {
alert("Failed");
});
я получаю эту ошибку:
XMLHttpRequest cannot load https://srv1.mydomain.xyz/rest/api/latest/issue/proj-3/worklog?time=1h+30m&comment=Test . No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin ' https://srv2.mydomain.xyz ' is therefore not allowed access. The response had HTTP status code 401.
Я тогда посмотрел больше на это и увидел, что у Atlassian есть что-то по имени Atlassian Connect, поэтому я постарался с этим:
AJS.$.ajax({
url: "https://srv1.mydomain.xyz/rest/api/latest/issue/proj-3/worklog",
type: "post",
dataType: "json",
contentType: "application/json",
xhrFields: { withCredentials: true },
async: false,
method: "post",
data: { time: "1h 30m",
comment: "Test" }
}).done(function(data) {
alert("Success");
}).fail(function() {
alert("Failed");
});
Но я получаю подобную ошибку:
XMLHttpRequest cannot load https://srv1.mydomain.xyz/rest/api/latest/issue/proj-3/worklog . Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin ' https://srv2.mydomain.xyz ' is therefore not allowed access.
Я также смотрел, чтобы, если я мог бы сделать это на стороне сервера от моего сервера с поддержкой PHP в том же домене, что и сервер JIRA, но я не получить base64-кодированные учетные данные при выполнении phpinfo()
, тогда я не думаю, что могу использовать этот подход (и я не хочу запрашивать у пользователя учетные данные).
Мне больно известно, что моя проблема связана с междоменной защитой, но я не могу найти примеры того, как ее исправить? Было бы здорово, если бы JIRA-сервер мог установить Access-Control-Allow-Origin
для определенных хостов, но я предполагаю, что это не параметр конфигурации (я не контролирую сервер JIRA).
Вы видите этот ответ: https://answers.atlassian.com/questions/69356/cross-origin-resource-sharing-with-jira-rest-api-and-javascript – Robert