2016-02-15 3 views
3

Я хочу сделать следующий запрос POST в угловом 2.Создания запрос HTTP POST в угловом 2

http://gearman.local.eviry.com/info 

с телом в виде следующей

{"gearman_servers" :[{ 

    "name" : "server 1", 
    "addr" : "192.168.1.115" 
    }, 
    { 
    "name" : "Server 2", 
    "addr" : "192.0.1.126" 
    } 
    ]} 

Я убедился, что это работает вне Угловым 2. (Использование POSTMAN) Я также удостоверился, что включен CORS.

Ниже мой угловой код

var url = 'http://gearman.local.eviry.com' + 
      '/info'; 
var GEARMAN_DATA = {"gearman_servers" :[{ 
      "name" : "server 1", 
      "addr" : "192.168.1.115" 
     }, 
      { 
       "name" : "Server 2", 
       "addr" : "192.0.1.126" 
      }]}; 

     let body = JSON.stringify(GEARMAN_DATA); 
     let headers = new Headers({ 'Content-Type': 'application/json' }); 
     let options = new RequestOptions({ headers: headers }); 

     this.http.post(url, body, options) 
      .map(res => res.json()) 
      .subscribe(
       data => {console.log(data);}, 
       err => this.logError(err), 
       () => console.log('Fetching complete for Server Metrics') 
      ); 

logError(err:Response){ 
     console.log("some error"); 
     console.log(err); 
    } 

Однако, делая это дает мне ошибку

XMLHttpRequest cannot load http://gearman.local.eviry.com/info. Invalid HTTP status code 405 

Кроме того, при печати на ошибку внутри функции logError, я получаю следующее:

http://grab.by/O7s8

I Трудно понять, что не так с запросом.

запроса Заголовки, как показано

Accept:*/* 
Accept-Encoding:gzip, deflate, sdch 
Accept-Language:en-US,en;q=0.8 
Access-Control-Request-Headers:content-type 
Access-Control-Request-Method:POST 
Cache-Control:no-cache 
Connection:keep-alive 
Host:gearman.local.eviry.com 
Origin:http://evil.com/ 
Pragma:no-cache 
Referer:http://localhost:3000/gearman-ui/job-queue 
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36 
X-FirePHP:0.4.4 
X-FirePHP-Version:0.4.4 
X-Wf-Max-Combined-Size:262144 

заголовки Ответные как показано

Allow:POST 
Cache-Control:no-cache 
Connection:Keep-Alive 
Content-Length:4519 
Content-Type:text/html; charset=UTF-8 
Date:Mon, 15 Feb 2016 08:32:54 GMT 
Keep-Alive:timeout=5, max=100 
Server:Apache/2.2.24 (Unix) mod_ssl/2.2.24 OpenSSL/1.0.1e-fips 

Если кто-нибудь использует POSTMAN, у меня есть следующий код, который работает. Я должен реализовать то же самое, используя угловые (Обратите внимание, что вы не сможете получить доступ к http://gearman.local.eviry.com)

https://www.getpostman.com/collections/f14ecaf29ffd52a54534

+0

Можете ли вы показать свои заголовки запроса и ответа?(Dev Tools> Network> [select your request]> Headers) – Sasxa

+0

Добавленные заголовки запросов – user3288346

+0

для «HTTP post» смотрите здесь ... http://stackoverflow.com/a/34823818/5043867 и http: // stackoverflow .com/a/34758630/5043867 –

ответ

0

Я сделал попытку с запросом (см это plunkr: http://plnkr.co/edit/6sbNYgIlCMNLkyyRerEk?p=preview). И, кажется, что réponse вашей preflighted запрос не является правильным:

XMLHttpRequest cannot load http://gearman.local.eviry.com/info. Response for preflight is invalid (redirect) 

После того, как посмотреть на réponse из этого, у меня есть следующие:

  • Общие

    Request URL:http://gearman.local.eviry.com/info 
    Request Method:OPTIONS 
    Status Code:302 Found 
    Remote Address:49.212.179.100:80 
    
  • Response Headers

    Connection:close 
    Content-Length:293 
    Content-Type:text/html; charset=iso-8859-1 
    Date:Mon, 15 Feb 2016 08:12:44 GMT 
    Location:https://gearman.local.eviry.com/info 
    Server:Apache 
    
  • Заголовки запросов

    Accept:*/* 
    Accept-Encoding:gzip, deflate, sdch 
    Accept-Language:en-US,en;q=0.8,fr-FR;q=0.6,fr;q=0.4 
    Access-Control-Request-Headers:content-type 
    Access-Control-Request-Method:POST 
    Cache-Control:no-cache 
    Connection:keep-alive 
    Host:gearman.local.eviry.com 
    Origin:http://run.plnkr.co 
    Pragma:no-cache 
    Referer:http://run.plnkr.co/IwOhToeVuXn1o1a4/ 
    User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36 
    

Код состояния 302 для этого запроса - проблема, о которой я думаю. Более того, я не видел заголовков CORS в его ответе ...

+0

Спасибо за ответ. Фактически, «gearman.local.eviry.com» доступен только на моей локальной установке. И да, заголовки CORS отсутствуют, для целей тестирования у меня есть jus, который включен в Chrome при использовании плагина. – user3288346

+0

Хорошо, я вижу. Является ли ваш запрос междоменным? У вас есть предполетная («ОПЦИИ»), которая выполняется перед целевым? –