2015-10-23 4 views
1

Я пытаюсь настроить переход (статус) проблемы в Jira с помощью POST-вызова. Я запускаю приложение Meteor с помощью Meteor Backend и Angular frontend.Meteor Jira POST call

Meteor.methods({ 
performPostCall: function(id, status){ 
    var transitionObject = { 
     "transition": { 
      "id": "11" 
     } 
    }; 
    var result = HTTP.call('POST', 'https://privateurl/rest/api/2/issue/' + id + '/transitions', 
     {data: transitionObject}, 
     {headers :{ 
      'Access-Control-Allow-Origin': '*', 
      'Authorization': 'Basic ******', 
      'Content-Type': 'application/json', 
      'Accept': 'application/json' 
     }}); 

    return result; 
} 
}); 

В моем веб-интерфейсе, я вызываю метод метеора и обработки обратного вызова, как это:

Meteor.call('performPostCall', id, status, function(error, success){ 
       if(error){ 
        alert(error); 
       } else { 
        alert(success); 
       } 
      }); 

При нажатии на кнопку, которая запускает вызов метода метеор, он будет это странно и милые ошибки:

XMLHttpRequest cannot load https://ddp--0266-remoteserverurl/sockjs/info?cb=4bxmv_smgg. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'remoteserverurl' is therefore not allowed access. The response had HTTP status code 503. 

Но я объявил это «Access-Control-Allow-Origin» в заголовке, так что я не понимаю, почему он жалуется. Может ли кто-нибудь сказать мне, что я делаю неправильно?

ответ

0

В соответствии с documentation третьим параметром должен быть объект с полями, необходимыми для совершения вызова, в вашем коде data и headers - это разные объекты.

Правильный синтаксис будет:

HTTP.call('POST', 'https://privateurl/rest/api/2/issue/' + id + '/transitions', { 
    data: transitionObject, 
    headers :{ 
    'Access-Control-Allow-Origin': '*', 
    'Authorization': 'Basic ******', 
    'Content-Type': 'application/json', 
    'Accept': 'application/json' 
    }}); 

Кроме того, в результате переменная, скорее всего, не определено, так как вы пытаетесь сделать это в синхронном режиме, POST вызов асинхронно, использовать четвертый параметр (обратного вызова) для передачи данных для клиента, например:

HTTP.call('POST', 'https://privateurl/rest/api/2/issue/' + id + '/transitions', { 
    data: transitionObject, 
    headers :{ 
    'Access-Control-Allow-Origin': '*', 
    'Authorization': 'Basic ******', 
    'Content-Type': 'application/json', 
    'Accept': 'application/json' 
    }}, function (error, result) { 
    if (!error) { 
     return result; 
    } 
    });