2016-12-11 19 views
0

私は認証のために個々のアカウントを持つ単純なASP.NET Web APIアプリケーションを持っています。jQuery + ASP.NET Web API + CORSエラー

私はそれでCORSを有効化:インストールしたパッケージを、コメントを追加しました:

var cors = new EnableCorsAttribute(
     origins: "*", 
     headers: "*", 
     methods: "*"); 
     config.EnableCors(cors); 

をファイルWebApiConfigに。

今、jQueryを使用して簡単なWebページからリクエストを行いたいと考えています。

var loginData = { 
    grant_type: "password", 
    username: "foo", 
    password: "Something_1562" 
}; 

$.ajax({ 
    type: 'POST', 
    url: "https://localhost:44351/Token", 
    data: loginData 
}).done(function (data) { 
    alert(data.userName); 
    alert(data.access_token); 

}).fail(function (data) { 
    alert('Request Status: ' + req.status + ' Status Text: ' + req.statusText + ' ' + req.responseText); 
}); 

をそして私はこの取得::私は今、このコードを持って

XMLHttpRequest cannot load https://localhost:44351/Token. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. 

EDIT:

いくつかの追加情報: - 私はHTTPS/SSL Web APIを で有効に持っています - APIがISS Expressで動作しています

答えて

1

&リンクが便利なこれらの次のカップルが欲しいです:

Access-Control-Allow-Origin: * 

それはHTTP認証、クライアント側のSSL証明書を意味し、要求が資格情報を提供することができない点で"*"の値が特別である、またそれは、クッキーが送信されることを許可しません。出典:Wikipedia

したがって、Web APIはAJAXを使用してアクセスするURLを指定する必要があります。例えば。

[EnableCors(origins: "http://yourAjaxClientURL", headers: "*", 
    methods: "*", SupportsCredentials = true)] 

[EnableCors]属性に trueSupportsCredentialsプロパティを設定すると、Web APIでのクロスオリジンの資格情報を許可します。出典:トリックをした Enabling Cross-Origin Requests in ASP.NET Web API 2

第三に便利なリンクwww.w3.org - cors

+0

!ありがとうございました。 –

+0

Btw、今私は別の問題を抱えています:私のGET要求はOPTIONSに変更され、405コードになります。私はいくつかの記事を読んだが、何も動作しない...任意のヒント? –

+0

@CátiaAzevedoまた、これらのリンクも役立ちます:http://enable-cors.org/server_iis7.html およびhttp://stackoverflow.com/questions/28488535/cors-settings-for-iis-7-5 – jyrkim