2016-03-29 11 views
0

これはCORSに関するもう1つの質問です。
POSTコールを行う前に、プリフライトコールが発生していて、何らかの理由でサーバがオプションを実行できるようになりました。要求されたリソースは、httpメソッド 'OPTIONS'をサポートしていません "

私はこの機能をウェブだけではどうしますか? config or iis changes?

興味深いことに、Get call worksは投稿できません。

私はAPIを呼び出すしようとすると、私がリクエストヘッダに

OPTIONS http://OldWebApiurl HTTP/1.1 
Host: http://Oldwebapi.host 
Connection: keep-alive 
Access-Control-Request-Method: POST 
Origin: http://TestSite 
User-Agent: Mozilla/5.0 (Windows NT 10.0; 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://testsite/page 
Accept-Encoding: gzip, deflate, sdch 
Accept-Language: en-US,en;q=0.8 

答えて

1
を以下のように送信しています、API私のテストアプリケーションで

<add name="Access-Control-Allow-Origin" value="*" /> 
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" /> 

のWeb.configファイルに以下を追加しました

web.configまたはiisの変更だけでこの作業を行うにはどうすればよいですか?

これらのファイルの変更のみでは、これが可能でない場合があります。たとえば、あなたの質問に使用されているタグに従って使用しているようなASP.NET Web APIを使用している場合は、following tutorialを参照して、CORSを有効にするためにソースコードに必要な変更を説明してください。

短いので、このWebアプリケーションのコードをソース管理から取得し、config.EnableCors();呼び出しをブートストラップセクションに追加し、[EnableCors(...)]属性を持つCORSでアクセス可能にする必要があるコントローラ/アクションを装飾します。次に、ソースコントロールで行った変更をプッシュバックし、ビルドをトリガーし、残りの処理を継続させ、変更をターゲット環境に展開します。その後、CORSを楽しむことができます。興味深いことに、Get call worksが役に立ちます。投稿のみが動作しません。

これは完全に正常です。ほとんどの一般的なブラウザは、GET AJAX呼び出しが安全であると考えられているため、飛行前要求を出しません。サーバー側の状態を変更することはできません。

+0

ありがとうDarin、私が言ったように、それは古いコードです。組織によって開発されたものはもう絵にはありません。ソースコントロール/継続的なビルドはありません。私たちはinetpubに展開されたdllを持っています。それらのapisは彼らがやっていることをやっているので、それは長い間触れられていません。 –

+0

さて、あなたはあなたがかなり怒っているのを恐れています。あなたがソースにアクセスすることさえできない古いコードなら、なぜあなたはCORSやもののようなことをしようとしていますか?その遺産と共に死ぬことを許し、新しいブロックを構築し始めましょう。この場合、私がリンクしている記事のようにコードを修正する必要があることを知っているときに、Web APIでCORSを有効にする方法について質問するのはなぜですか? –

+0

私たちはすでにそれをやっており、私たちはうんざりしています:)。問題は、私たちは新しいアプリケーションを段階的にリリースしています。最初のバージョンは公開できません。すべてのapisをリワークすることは時間がかかるだろう。私はこれがweb.configの設定によって働くことを望んでいたことを間違いなく望んでいた。 –

関連する問題