1

ここで指示されているようにユーザーとパスワードを指定しましたhttp://jaydata.org/blog/jaydata-1.0.5-is-here-with-authentication-support-and-more しかし、401を取得し続けています。何かアイデアはありますか?

4

3 に答える 3

0

Ok、

上記の問題の解決策を見つけました。問題は、CORS を使用したサーバー側の構成ミスでした。記録されたリクエスト ( http://i.stack.imgur.com/F228l.pngを参照) で、Chrome は「プリフライト リクエスト」を送信します (HTTP リクエストにはメソッド OPTIONS があります)。

単純なリクエスト (上記で説明) とは異なり、「プリフライト」リクエストは、実際のリクエストが安全に送信できるかどうかを判断するために、最初に OPTIONS メソッドによって他のドメインのリソースに HTTP リクエストを送信します。

https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Preflighted_requests

サーバーで HTTP 属性 'method' を検証していなかったため、私の BasicAuth モジュールはすべての着信 HTTP 要求に対して承認プロセスを開始し、承認ヘッダーが設定されていないため、最初の要求 (「プリフライト要求」) をすぐに実行できませんでした。

HTTP メソッドのすべての検証を修正した後、アスペクトとして動作します。

web.confも調整する必要がありました

<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
  <add name="BasicAuthModule" type="NutritionDataService.Auth.BasicAuthModule"/>
</modules>
<httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
    <add name="Access-Control-Max-Age" value="3600" />
    <add name="Access-Control-Allow-Headers" value="Origin, Content-Type, Accept, MaxDataServiceVersion, Authorization, Access-Control-Allow-Origin, DataServiceVersion" />
    <add name="Access-Control-Allow-Methods" value="PUT, POST, GET, DELETE, MERGE, OPTIONS" />
  </customHeaders>
</httpProtocol>

Access-Control-Allow-Headers は、要求されたすべてのヘッダーを取得する必要があります。そうしないと、501 応答が返されます。(上のスクリーンショットでは、「accept, maxdataserviceversion.dataserviceversion, authorization」でした)

于 2015-01-07T14:36:07.690 に答える
0

私は同じ問題を抱えています。ブログ投稿 ( http://jaydata.org/blog/jaydata-1.0.5-is-here-with-authentication-support-and-more ) に従い、basisc 認証の資格情報をコンテキストの初期化に適用しました。

var ctx = new NutritionDataService.NutritionDbEntities({
        name: 'oData',
        oDataServiceHost: 'https://localhost:44300/Data.svc',
        user: "usr1", 
        password: "test" 
 });

しかし、認証ヘッダーが設定されていないようです。

http://i.stack.imgur.com/F228l.png

この投稿の問題 jaydata 基本認証でも同じ結果でアプローチを試みました-認証ヘッダーは送信されません。

jaydata をトリガーして認証ヘッダーを送信する方法を知っている人はいますか?

于 2015-01-07T12:59:23.043 に答える
0

フィドラーまたはワイヤーシャークでトラフィックをキャプチャできますか? 基本認証は機能します....

于 2012-12-14T07:02:20.240 に答える