あなたはそれがあなたのアプリケーションのコードに到達する前にOPTIONS
要求は、アプリケーション・コードではなく、システムの他の部分で扱われます確認してください、あなたはあなたのweb.config
に以下を追加してみてください可能性があります
<system.webServer>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
また含める必要があります:
<add name="OPTIONSVerbHandler" path="*" verb="OPTIONS"
modules="IsapiModule" requireAccess="None"
scriptProcessor="C:\Windows\System32\inetsrv\asp.dll"
resourceType="Unspecified" />
は、Aをご覧ください。 nswerはIIS hijacks CORS Preflight OPTIONS requestです。
それともだけでもこの:
<add name="OPTIONSVerbHandler" path="*" verb="OPTIONS"
modules="ProtocolSupportModule" requireAccess="None" />
、自身の作品にそのどれもが、その後、あなたのglobal.asax
または他のコードでは、あなたがしようとしていない可能性がある場合:
if (filterContext.HttpContext.Request.HttpMethod == "OPTIONS")
{
filterContext.HttpContext.Response.Flush();
}
...または上の他のいくつかのバリエーションをたとえば、次のようになります。
if (Request.Headers.AllKeys.Contains("Origin", StringComparer.OridinalIgnoreCase)
&& Request.HttpMethod == "OPTIONS") {
Response.Flush();
}
どのような特定のコードを使用していても、ある:
- は確か
OPTIONS
要求は、実際にアプリケーションによって処理/捕まるさせるコード-ないキャッチ/史上
- 作るアプリのコードに到達する前に、システムの他の部分で扱う明示的な取り扱いを持っていることを確認アプリケーションコード
- で
OPTIONS
要求のために、アプリケーション・コードの取り扱いOPTIONS
がちょうどResponse.Flush()
または私はに関連しているかわからない、別のアプローチを行う作りますあなたの状況は、コード化されたとしてではなく、私は念のために言及します:私にとって
public HttpResponseMessage Options()
{
var response = new HttpResponseMessage
{
StatusCode = HttpStatusCode.OK
};
return response;
}
hmmm、あなたはPOSTだけで、OPTIONSではなくリクエストを送信しようとしましたか?私はあなたがCORS要求をするとき、ブラウザはあなたのためのOPTIONSのものをバックグラウンドで実行すると思う(私は間違っているかもしれない)。 – victor
POST要求自体は機能しますが、ブラウザはOPTIONS要求を最初に送信し、それは失敗し、POSTを送信することはありません。 – SZH
[EnableCors( "https://example.com"、 "*"、 "post、options")]? アクションには、POST – victor