2017-06-24 18 views
5

में शामिल नहीं किया गया है, मैं बहुत सरल कोणीय 4 http अनुरोध का प्रयास कर रहा हूं। जब मैं क्रोम डेवलपर टूल की जांच करता हूं, तो मैं http शीर्षलेख नहीं देख सका।कोणीय 4 में हेडर को http अनुरोध

const headers: Headers = new Headers(); 
headers.append('Content-Type', 'application/json'); 
headers.append('Authorization', 'Bearer: 123213'); 
this.http.post('https://127.0.0.1:502', JSON.stringify(token), {headers: headers}).subscribe(); 

क्या मुझे कुछ याद आ रही है?

+0

जांच [इस] (https://stackoverflow.com/a/41133924/2545680) –

+0

@Maximus बस की कोशिश की और यह काम नहीं करता। :/ –

+0

मैंने अपने उत्तर में एक उदाहरण प्रदान किया, बस चेक किया, यह मेरे लिए काम करता है, मैं कोणीय v4.x –

उत्तर

13

[email protected] से शुरू @angular/http मॉड्यूल को इसके सभी वर्गों से बहिष्कृत किया गया है। अब angular/common/http का उपयोग किया जाना चाहिए। अधिक के लिए Read here

आप इस तरह यह कर सकते हैं:

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

export class AppComponent { 
    constructor(private http: Http) { 
     const headers = new Headers(); 
     headers.append('Content-Type', 'application/json'); 
     headers.append('authentication', `hello`); 

     const options = new RequestOptions({headers: headers}); 
     this.http.post(
      "http://localhost:3000/contacts", 
      JSON.stringify({id: 4, name: 'some'}), 
      options 
     ).subscribe(); 

आप सुनिश्चित करें कि आप @angular/http से सही वस्तुओं आयात कर रहे हैं:

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

अगर आप अभी भी नहीं दिख रहा है आपके हेडर, यह भी संभव है कि आप जिस सर्वर का उपयोग कर रहे हैं वह उन्हें अनुमति नहीं देता है। जब कोई ब्राउज़र अन्य मूल के लिए अनुरोध करता है, तो यह जांचने के लिए कि क्या सर्वर कस्टम हेडर की अनुमति देता है, यह access-control-headers-request हैडर भेजता है। यदि आपका सर्वर कस्टम शीर्षलेखों को अनुमति देने के लिए कॉन्फ़िगर नहीं किया गया है, तो आप उन्हें परिणामी अनुरोधों में नहीं देख पाएंगे।

+1

का उपयोग कर रहा हूं [शीर्षकों पर दस्तावेज़] [https://angular.io/api/http/Headers) , कक्षा को बहिष्कृत किया गया है और इसे [वर्ग * एचटीपीएचडर्स *] (https://angular.io/api/common/http/HttpHeaders) का उपयोग करने का सुझाव दिया गया है। मैं अभी भी इसे काम नहीं कर सकता, हालांकि (सिंटैक्स के साथ कुछ जो मैं बहुत अनजान हूं) ताकि यदि आप गैर-अप्रचलित वर्ग के साथ अपना उत्तर अपडेट करना चाहते हैं, तो इसकी सराहना की जाएगी। – DonkeyBanana

+0

@ डोंकीबाना, हाँ, '@ कोणीय/http' मॉड्यूल को इसके सभी वर्गों से बहिष्कृत किया गया है। अब '@ कोणीय/सामान्य/http' का उपयोग किया जाना चाहिए। मैं जवाब में जोड़ दूंगा। धन्यवाद –

0

इस

constructor(private http: Http) { 
      this.headers = new Headers(); 
      this.headers.append('content-type', 'application/json'); 
    } 

रखो और विधि के अंदर इस

return this.http.post(url, jsonData, this.headers).map((resp: Response) => resp.json()); 
9

तो आप का उपयोग HttpClient बजाय Http अपने कोड होना चाहिए इस तरह दिखता है:

login(credintials: Authenticate): Observable<any> { 

    const body = { 
     username: credintials.username, 
     password: credintials.password, 
     grant_type: 'password', 
     client_id: credintials.client_id 
    }; 
    const headers = new HttpHeaders() 
     .set('Content-Type', 'application/x-www-form-urlencoded') 
     .set('Authorization', 'Basic loremlorem'); 

    return this.http.post(`${baseUrl}/uaa/oauth/token`, 
     body, 
     { 
      headers: headers 
     } 
    ); 
} 

अपने पैरामीटर वैकल्पिक है आपको इस तरह के पैरा जोड़ना चाहिए:

let params: HttpParams = new HttpParams(); 
if (param) { 
    params = params.append('page', param.page); 
} 

स्रोत कोड लगता है:

/** 
* Construct a new body with an appended value for the given parameter name. 
*/ 
append(param: string, value: string): HttpParams; 
संबंधित मुद्दे