2017-09-25 13 views
0

Angels 4でVSTS Rest APIにPOSTしようとしているWebアプリケーションを構築しています。私は明らかにサービスを所有していないし、現地ではなくAzureのライブで走ろうとしている(私はローカルテストのためにクロムでCORSを無効にすることができると理解している)。Angular 4フロントエンドがAzure CORSでホストされている問題

Failed to load 
https://app.vssps.visualstudio.com/oauth2/tokenRemovedtoStackOverflow 
Response to preflight request doesn't pass access control check: No 'Access- 
Control-Allow-Origin' header is present on the requested resource. Origin 
'https://blah.azurewebsites.net' is therefore not allowed access. The 
response had HTTP status code 400. 

コールは、基本的には、次のとおりです。

private _appID = blah; 
private _tokenRequest = 'client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer&client_assertion={0}&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion={1}&redirect_uri={2}'; 
    private _returnURI = 'https://blah.azurewebsites.net/'; 
    private headers = new Headers(
    { 
     'Access-Control-Allow-Origin': '*', 
     'Access-Control-Allow-Headers': 'Content-type', 
     'Content-Type': 'application/x-www-form-urlencoded', 
    }); 

    constructor(private http: Http) { } 

    getAccessToken(code: string): Observable<IToken> { 
    const _url = 'https://app.vssps.visualstudio.com/oauth2/' + code; 
     const body = 'client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer&client_assertion=' + 
     this._appID + 
     '&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion=' + 
     code + '&redirect_uri=' + 
     this._returnURI; 
    const options = new RequestOptions(); 
    options.headers = this.headers; 

     return this.http 
     .post(_url, body, options) 
     .map((response: Response) => <IToken[]> response.json()) 
     .do(data => console.log('All: ' + JSON.stringify(data))) 
     .catch(this.handleError); 

は現在、私は、サーバー/ APIを持っていない(AKA私の元で唯一のものは角である)、それだけでAzureのWebアプリケーションが提供するものは何でも、サーバー上で実行しています。

CORSを利用してazureでホストするnodejsサーバーを追加するのは私の唯一の選択ですか?

答えて

2

Access-Control-Allow-OriginおよびAccess-Control-Allow-Headersは、レスポンスヘッダーです。彼らはあなたの要求に場所がありません。

カスタムヘッダーを追加することは、400エラーを生成するプリフライトOPTIONS要求のトリガーの1つです。

これらを削除すると、要求が単純な要求になり、サービスによって許可される可能性があります。

失敗する:はい、許可を与えるようにホストを変更する必要があります。

関連する問題