web.api プロジェクトを空にし、Microsoft.aspnet.webapi.cors 5.2.3 をインストールし、追加します。
config.EnableCors();
webapiconfig に。コントローラーとアクションを作る
public class HomeController : ApiController
{
[EnableCors("*" , "*" , "*")]
public async Task<string> Get()
{
return await Task.FromResult("omg");
}
}
アプリをデバッグし、フィドラーをロードして、http://localhost:61939/api/Homeへのリクエストを実行します。
CORS ヘッダーはありません。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>
私は何が欠けていますか?Get メソッドへのすべてのリクエストに Access-Control-Allow-Origin ヘッダーが挿入されないのはなぜですか?
また、web.configでCORSを定義するという答えは答えではありません...ある時点で、オリジンチェックを追加し、場合によってはHTTPメソッドを次のようにチェックする必要があります。
if(requestContext.HttpMethod == "POST" && (origin == "https://someplace.com" || origin == "http://localhost"))