2017-06-12 90 views
1
private handleError (error: any) { 
    // In some advance version we can include a remote logging of errors 
    let errMsg = (error.message) ? error.message : 
     error.status ? `${error.status} - ${error.statusText}` : 'Server error'; 
    console.error(errMsg); // Right now we are logging to console itself 
    return Observable.throw(errMsg); 
    } 
    startCrawlJob(crawlvalues,username,password) { 
    let headers = new Headers({ 'Accept': 'application/json' }); 
    headers.append('Authorization', 'Basic ' + 
     btoa(username+':'+password)); 

    let options = new RequestOptions({ headers: headers }); 
    return this.http 
     .post('http://localhost:8090/Crawler_p.html',crawlvalues, options).map(res => 

     res.json() 

    ).catch(this.handleError); 

    } 

我想用我的郵件請求發送郵件頭,但我無法在我的請求中找到任何郵件頭。上面的代碼可能是錯誤的。下面的 是Chrome中的附加請求。 enter image description hereAngular http post不發送郵件頭

+0

您附加的圖像是OPTION請求,您的標題將顯示在POST請求中。 –

回答

1

@ Vivek的回覆是正確的。

允許我去更多的進入細節,讓您更好地瞭解發生了什麼:

瀏覽器進行使用OPTIONS HTTP動詞預檢請求,這是一個額外的請求XHR對象進行,以確保它是允許的實際提出請求。

除非您設置自定義標題,否則在設置這些標題時就沒有預檢,就像您使用授權標題一樣,將執行選項請求。這個不包括@Vivek在他的回覆中指定的那些海關頭文件。一旦找出終端未響應預檢請求的原因,並且該請求成功,您將看到具有基本身份驗證憑據值的授權標頭。

這裏是一個jsfiddle,我向一個虛擬api發出一個請求,所以你看它在預檢請求成功後就可以工作。請參閱app.ts中的代碼

Here您可以閱讀有關該預檢請求的更多信息。

看那Chrome的網絡監控:

enter image description here

所以,只要解決什麼是錯了你的API資源,那麼你可以將正常運行@Vivek提到就好了。

2

您附加的圖像是OPTION請求,您的標題將顯示在POST請求中。

一旦選項請求被授權,然後你的發佈請求將被做出。

問題是你所做的請求是未經授權的,請檢查服務器端的代碼,這不是一個角度問題,代碼是好的。

它會工作。