2016-03-21 3 views
1

私はデータを投稿しようとするとブラウザ(chrome)がOPTIONSリクエストを自動的に送信しますが、このリクエストはIIS express(Visual Studioのローカル開発者)によって401になるため、現在私の頭を傷つけています。問題は断続的でしたが、今はいつも起こっているように見えますが、私はそれを引き起こしている何かの手がかりを持っています。オプションは401を取得しますが、Fiddlerを使用する場合は表示されません。

私は奇妙な結果を得ましたが、自分自身で問題を解決しようとしました...私はフィドラーをオンにして、突然OPTIONS要求が問題なく通過します。要求の唯一の違いは次のとおりです。

OPTIONS /api/users/skill HTTP/1.1 
Host: localhost:65121 
Connection: keep-alive 
Pragma: no-cache 
Cache-Control: no-cache 
Access-Control-Request-Method: PUT 
Origin: http://localhost:3000 
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36 
Access-Control-Request-Headers: accept, content-type 
Accept: */* 
Referer: http://localhost:3000/ 
Accept-Encoding: gzip, deflate, sdch 
Accept-Language: en-US,en;q=0.8 

I、すなわち、これはヘッダ内の情報が異なる場合の>異なるタグ<、

<this is different>the header info here has changed</this is different> 
を使用してい

(バイオリン弾きWITHOUTオプションヘッダ)

(OPTIONS HEADER WITHバイオリン弾き)

OPTIONS <this is different>http://localhost:65121</this is different>/api/users/skill HTTP/1.1 
Host: localhost:65121 
<this is different>Proxy-</this is different>Connection: keep-alive 
Pragma: no-cache 
Cache-Control: no-cache 
Access-Control-Request-Method: PUT 
Origin: http://localhost:3000 
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36 
Access-Control-Request-Headers: accept, content-type 
Accept: */* 
Referer: http://localhost:3000/ 
Accept-Encoding: gzip, deflate, sdch 
Accept-Language: en-US,en;q=0.8 

2つの要求の唯一の違いは、これまでプロキシ経由でAPI呼び出しを理由何のための接続に使用diferentヘッダを持っていることであり、それはのように完全修飾アドレスを送信オプション要求の一部それは言われていますが、どちらもAPIのポートに移動します。

これまで経験したことがある人や、ミドルにプロキシを置くとどうしてそれが壊れているのか考えている人はいますか?

web.configファイル - >http://pastebin.com/CgWVzAvm

+0

APIを使って何をしようとしていますか? 'OPTIONS'はどのメソッドが許可されているか(そして私が知っている限り、それは非常にまれにしか使われていません)サーバに尋ねるために使われます。このリクエストをブラウザでどのように作成していますか?あなたは特に 'OPTIONS'を使いたいですか? (または実際に 'GET' /' POST'/etcをやろうとしていますか?) – Rob

+0

私はAngularのHTTPモジュールからAJAX呼び出しを行っています。 HTMLを提供したものと一致しない原点へのPOSTリクエストであるため、ブラウザは自動的にOPTIONSリクエストを送信します。私の研究の中で何らかの理由でAPIサーバがAuthヘッダを含んでいないので、OPTIONSコールは辞退していますが、仕様+クローム実装では許可されていないため、認証ヘッダーを追加できません。 –

答えて

0

PUT動詞は、IISサーバーで有効になっているかどうかを確認してください。 IISサーバーでは、既定でput、deleteなどの動詞が無効になります。
For enabling the verbs

同じ方法でポスト動詞を使用し、それが通過するかどうかを確認してください。

+0

それはそうです。うんざりする –

関連する問題