2017-04-24 11 views
0

私のionic2アプリからASP APIからベアラトークンを取得しようとしています。Ionic 2 ASP APiトークンリクエスト

下図のように私は、APIのCORSを有効にしている:

var cors = new EnableCorsAttribute("*", "*", "*"); 
     config.EnableCors(cors); 

これは、ユーザーを登録するために私のAPIに私のイオン2のアプリからのPOSTリクエストを形成するために私を可能にしました。これは素晴らしいことです。以下に示すように、私はこのために使用 要求がある:私は使用してい

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8100' is therefore not allowed access. 

要求:私は私のAPIからトークンを取得しようとすると、

let headers = new Headers({ 
    'Content-Type': 'application/json' 
    }); 


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

    let body = JSON.stringify({ 
    Email: credentials.email, 
    Password: credentials.password, 
    ConfirmPassword: credentials.confirmPassword 
    });  

    return this.http.post('http://localhost:34417/api/Account/Register', body, options) 

は、しかし、私は次のエラーを受け取ります試してみて、次のようにトークンがある取得:

let body = "grant_type=password" + "&userName=" + credentials.email + "&password=" + credentials.password; 
let headers = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' }); 
let options = new RequestOptions({ headers: headers });  
return this.http.post('http://localhost:34417/token', body, options) 

これは、このエラーは、私のAPIの細かい作業に他のすべての要求を投げているだけの要求です。

私は何かを見逃しましたか、間違っていますか?

+0

あなたは*としてアクセス元を許可していますか? –

+0

@suraj APIを参照している場合は、EnableCorsAttributeの最初のアスタリスクがこれを行います。 –

答えて

0

var cors = new EnableCorsAttribute("*", "*", "*");

あなたは*としてAccess-Control-Allow-Originを設定しているように見えます。

チェックMDN CORS Requests with credentials

Credentialed requests and wildcards

When responding to a credentialed request, the server must specify an origin in the value of the Access-Control-Allow-Origin header, instead of specifying the "*" wildcard.

資格情報を使用する場合は、特定のURLを設定する必要があります。 イオン2のみを使用する予定の場合は、setting a proxyでコルズの問題を回避できます。 official blogによると

The proxies settings contain two things: the path you use to access them on your local Ionic server, and the proxyUrl you’d ultimately like to reach from the API call.

{ 
    "name": "ionic-2-app", 
    "app_id": "my_id", 
    "proxies": [ 
    { 
     "path": "/api", 
     "proxyUrl": "http://localhost:34417/api" 
    } 
    ] 
} 

イオンデフォルトでコマンドを果たすlocalhost:8100にサーバを起動します。 セットされたプロキシはあなたのhttp://localhost:34417/apiに当ります。

リクエストのパスは実際のサーバーの代わりにlocalhost:8100/apiになります。

+0

私はこのAPIを私のionic 2アプリで使用しようとしていますが、アプリでプロキシを設定しようとしましたが、間違っていること、正確に "Path"と "ProxyUrl"に追加する必要があることを恐れていますか?ほとんどの例は、質問をしている人にとって非常に具体的であり、その2つが正確に何を参照しているのかは言及していません。 –

+0

これをクリアしていただきありがとうございます。ただし、ASP APIからトークンを取得する呼び出しはUrl/api/token。 URL/api/etc/etcのスコールが期待どおりに機能します。これはエラーを投げているURL /トークンを呼び出すことだけです –

+0

proxyUrlを 'http:// localhost:34417'に設定するとどうなりますか?あなたのreqのURLは 'localhost:8100/api/token'となり、' localhost:8100/api/api/.. 'となります。 –