gpt4 book ai didi

asp.net-web-api - Web API 2 CORS IIS Express 调试和无 Access-Control-Allow-Origin header

转载 作者:行者123 更新时间:2023-12-04 07:08:22 25 4
gpt4 key购买 nike

清空web.api项目,安装Microsoft.aspnet.webapi.cors 5.2.3,添加

config.EnableCors();

到 webapiconfig。制作 Controller 和 Action

public class HomeController : ApiController
{
[EnableCors("*" , "*" , "*")]
public async Task<string> Get()
{
return await Task.FromResult("omg");
}
}

调试应用程序并加载 fiddler 并向 http://localhost:61939/api/Home 发出请求

不存在 CORS header 。 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 header ?

此外,在 web.config 中定义 CORS 的答案也不是答案...在某些时候,我需要添加源检查,甚至可能需要检查 HTTP 方法,例如:

if(requestContext.HttpMethod == "POST" && (origin == "https://someplace.com" || origin == "http://localhost"))

最佳答案

您所做的足以启用 CORS,您还可以使用以下代码在所有 Controller 上启用 CORS:

 var cors = new EnableCorsAttribute("*", "*", "*"); 
config.EnableCors(cors);

我不确定您如何测试它,但请注意,只有当请求包含 Origin header 时,它才会返回 Access-Control-Allow-Origin 响应中的标题。如果您在请求中省略原始 header ,响应将不会包含 Access-Control-Allow-Origin

Request and Response Headers

关于asp.net-web-api - Web API 2 CORS IIS Express 调试和无 Access-Control-Allow-Origin header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38470193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com