簡體   English   中英

如何使用“內容類型”:“ application / x-www-form-urlencoded”發出發布請求?

[英]How to make a Post request with “content type”: “application/x-www-form-urlencoded”?

我需要發出請求以獲取oAuth2身份驗證服務器中的令牌。

我可以在郵遞員中提出請求並獲得令牌,而無法從角度4中提出相同的請求。

我的CORS配置正確,因為其他請求運行正常。

這是HTTP請求的詳細信息。

POST /oauth/token HTTP/1.1
Host: localhost:8080
Authorization: Basic YXBwbGljYXRpb246c2VjcmV0
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache
Postman-Token: 9f9582e9-fe73-499f-d7f7-82498a974e39

grant_type=password&username=pedroetb&password=password

在角度4中,我嘗試過這種方式

let headers = new Headers();
    headers.append('Content-Type', 'application/x-www-form-urlencoded');
    headers.append("Authorization","Basic YXBwbGljYXRpb246c2VjcmV0");

    var obtainTokenUrl = 'http://localhost:8080/oauth/token';

    this._http.post(obtainTokenUrl + "?grant_type=password&username=pedroetb&password=password", null, {headers: headers}).subscribe(response => {
      console.log(response);
    });

但這是行不通的。

這是郵遞員請求標頭的屏幕截圖: 在此處輸入圖片說明

身體: 在此處輸入圖片說明

那么如何從角度4發出相同的請求?

這是我用於檢索用戶數據的簡單代碼。 請參閱,標題作為標題選項給出。 您可以在文檔中查看更多

createUser(user: User): Observable<User> {
    const submittedUser = JSON.stringify(user); // user is form-submitted data object
    const headers = new Headers ({ 'Content-Type': 'application/json' });
    const options = new RequestOptions({headers: headers});
    return this.http.post(baseURL + 'user/create', submittedUser, options)
      .map((response: Response) =>  {this.processHttpmsgService.extractData(response);})
      .catch(error=> Observable.throw(error));
  }

HeaderOptions文件

PostRequest(URL:字符串,數據:任何){

var headers = new Headers();

let req = JSON.stringify(data);

 this.onRequest("request: " + url + "data: " + req);

headers.append ("content-Type","application/json");
headers.append("charset","utf-8;");
headers.append("Access-Control-Allow-Origin", "*");
var token = localStorage.getItem('token');
headers.append("Authorization","Bearer "+ token);

 let options = new RequestOptions({ headers: headers });
console.log(options);

  // don't have the data yet
 return new Promise(resolve => {

   this.http.post(url,req,options)
   .map(res => res.json())
   .subscribe(data => {
     resolve(data);

     this.onSuccess(data);
  }
  ,error => {
 this.onError(error);
  }
  );
});

}

也不要忘記從@ angular / http導入import {Http,Headers,RequestOptions};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM