【发布时间】:2021-06-26 06:27:06
【问题描述】:
我正面临选项预检请求显示 404 未找到的 cors 问题。在我的本地环境中对此进行了测试,我的设置完全正常。但是当我尝试在实际的 IIS 服务器中实现此功能时,选项预检请求显示 404 未找到。我的 api 是作为 web api 项目创建的。
我曾尝试按照其他帖子中的建议设置预检请求处理程序,但它仍然无法正常工作。 是否有任何特定原因使其仅在本地有效?
此部分显示选项请求:
一般的 请求网址:http://api.domain.cc/api/Login 请求方法:选项 状态码:404 未找到 远程地址:192.168.10.5:80 推荐人政策:strict-origin-when-cross-origin 响应标头: HTTP/1.1 404 未找到 内容类型:文本/html X-Powered-By: ASP.NET 服务器:域 日期:格林威治标准时间 2021 年 3 月 30 日星期二 07:54:34 内容长度:1245 请求标头: 选项 /api/登录 HTTP/1.1 主机:api.domain.cc 连接:保持活动 Pragma:无缓存 缓存控制:无缓存 接受: */* 访问控制请求方法:POST 访问控制请求标头:授权,内容类型 来源:http://site.domain.cc 用户代理:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36 Sec-Fetch-Mode: cors 参考:http://site.domain.cc/ 接受编码:gzip,放气 接受语言:en-US,en;q=0.9,zh-TW;q=0.8,zh;q=0.7,zh-CN;q=0.6我的 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>
<validation validateIntegratedModeConfiguration="false" />
<modules>
<remove name="ApplicationInsightsWebTracking" />
<add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" preCondition="managedHandler" />
</modules>
</system.webServer>
我的 web api 配置如下:
公共静态无效寄存器(HttpConfiguration 配置) { // Web API 配置和服务 EnableCorsAttribute cors = 新的 EnableCorsAttribute( 来源:“http://site.domain.cc”, 标题:“*”, 方法:“获取、发布、删除、放置、选项”) { SupportsCredentials = true }; config.EnableCors(cors); // Web API 路由 config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( 名称:“默认API”, routeTemplate: "api/{controller}/{id}", 默认值:新 { id = RouteParameter.Optional } ); }【问题讨论】:
-
请以文本而非图像的形式编码。像往常一样:我们无法调试图像。
-
谢谢提醒,刚改回code
-
我已经尝试了该帖子中的两种解决方案,但它仍然不适合我。尝试使用 iisreset 为我的 api 站点在 ISAPI 过滤器中设置选项动词,并为选项请求添加路由,但两者都不起作用。
标签: c# iis asp.net-web-api cors asp.net-web-api2