2016-12-08 3 views
0

Я пытаюсь добавить заголовки к моей просьбе http поста, как показано нижеAngularJS2 добавления заголовков HTTP POST не работает

import { Injectable } from '@angular/core'; 
import { Http, Headers, RequestOptions } from '@angular/http'; 

@Injectable() 
export class UserService extends ServiceBase { 

    apiUrl: string; 
    private contentHeaders = new Headers(); 

    constructor(private http: Http) { 
     super(); 
     this.apiUrl = appConfig.apiBaseUrl + '/users'; 
    } 

    login(user: User) { 
     this.contentHeaders.append('Accept', 'application/json'); 
     this.contentHeaders.append('Content-Type', 'application/json'); 
     return this.http.post(
      this.apiUrl+'/sign_in', 
     JSON.stringify({user: user}), 
      {headers: this.contentHeaders} 
     ); 
    } 
} 

заголовков, показанных в Chrome DevTools:

OPTIONS /api/v1/users/sign_in HTTP/1.1 Host: offers2win.com Connection: keep-alive Pragma: no-cache Cache-Control: no-cache Access-Control-Request-Method: POST Origin: http://evil.com/ User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36 Access-Control-Request-Headers: access-control-allow-credentials, content-type Accept: */* Referer: http://localhost:3000/? Accept-Encoding: gzip, deflate, sdch Accept-Language: en-US,en;q=0.8

Но эти заголовки не видны в инструменте Chrome dev, сетевой панели. Что мне здесь не хватает.

ответ

0

Попробуйте

constructor(private http: Http) { } 

    login(username: any, password: any) { 
    let body = JSON.stringify({ "email" : username, "password" : password }); 
    let headers = new Headers({"Content-Type": "application/json"}); 
    let options = new RequestOptions({headers: headers}); 
    return this.http.post(APIUrl+"/login", body, options).map(res => res.json()); 
    } 
+0

Еще его же. 'Access-Control-Request-Headers: content-type' :( –

+0

Сервер (на который отправляется запрос POST) должен включать заголовок заголовка Access-Control-Allow-Headers (и т. Д.) В свой ответ. запрос от клиента не имеет никакого эффекта. Это связано с тем, что сервер должен указать, что он принимает запросы с кросс-началом (и что он разрешает заголовок запроса Content-Type и т. д.) - клиент не может решить сам, что данный сервер должен разрешить CORS. –

+0

Я установил расширение CORS в Chrome. Тем не менее он не работает. –

Смежные вопросы