C# 未处理OWIN飞行前请求
中间件不会处理从浏览器到我自己的主机OWIN WebAPI的所有飞行前请求。如果我向邮递员提出选择请求,它们将被处理。为什么会有这样的行为 请求 网址: 请求方法:选项 状态代码:401未经授权的远程 地址:[::1]:9000 接受:/ 接受编码:gzip、deflate、sdch、br 接受语言:如如如,如;q=0.8,在美国;q=0.6,en;q=0.4 访问控制请求头:内容类型 访问控制请求方法:POST 连接:保持活力 主机:localhost:9000 来源: 推荐人: 用户代理:Mozilla/5.0 Windows NT 10.0;Win64;x64 AppleWebKit/537.36 KHTML,如Gecko Chrome/56.0.2924.87 Safari/537.36 Chrome的响应标题: 内容长度:0 日期:2017年2月8日星期三04:17:26 GMT 服务器:Microsoft HTTPAPI/2.0 WWW:NTLM 邮递员的响应标题: 访问控制允许凭据→真的 访问控制允许源→铬-extension://fhbjgbiflinjbdggehcddcbncdddomop 容许→职位 内容长度→76 内容类型→应用程序/json;字符集=utf-8 日期→2017年2月8日星期三04:21:02 GMT 服务器→微软HTTPAPI/2.0 我在appbuilder中添加了假的中间件:C# 未处理OWIN飞行前请求,c#,.net,cors,owin,C#,.net,Cors,Owin,中间件不会处理从浏览器到我自己的主机OWIN WebAPI的所有飞行前请求。如果我向邮递员提出选择请求,它们将被处理。为什么会有这样的行为 请求 网址: 请求方法:选项 状态代码:401未经授权的远程 地址:[::1]:9000 接受:/ 接受编码:gzip、deflate、sdch、br 接受语言:如如如,如;q=0.8,在美国;q=0.6,en;q=0.4 访问控制请求头:内容类型 访问控制请求方法:POST 连接:保持活力 主机:localhost:9000 来源: 推荐人: 用户代理:M
public void BuildWebApi(IAppBuilder appBuilder)
{
appBuilder.Use(async (ctx, next) =>
{
await next();
});
并将断点放在等待下一行。所以,断点不会在浏览器发出飞行前请求时停止,而在邮递员选项响应时停止。解决了这个问题
HttpListener listener = (HttpListener)appBuilder.Properties["System.Net.HttpListener"];
listener.AuthenticationSchemeSelectorDelegate = request =>
{
if (request.HttpMethod == "OPTIONS")
{
return AuthenticationSchemes.Anonymous;
}
};
解决了这个问题
HttpListener listener = (HttpListener)appBuilder.Properties["System.Net.HttpListener"];
listener.AuthenticationSchemeSelectorDelegate = request =>
{
if (request.HttpMethod == "OPTIONS")
{
return AuthenticationSchemes.Anonymous;
}
};
而且可能是相关的。此外,如果您在问题中也包含请求头,可能会有所帮助。UseCors不起作用,因为它也在后台添加了中间件,这些中间件不会在来自Chrome的飞行前请求中调用。当然,我已经添加了UserCors和config.EnableCors,但它没有任何效果。好的,这对您没有帮助吗?不,我没有任何xml配置,因为我自己的主机。我在问题中添加了请求标题。请阅读以下网址的答案。它不使用任何XML配置。相反,它涉及:1安装Microsoft.AspNet.WebApi.Cors nuget包、Microsoft.Owin.Cors nuget包,然后2在Startup.cs文件的WebApiConfig.Registerconfig行上方添加config.EnableCorsnew EnableCorsAttribute*、*、GET、POST、OPTIONS、PUT、DELETE,然后3将app.UseCorsMicrosoft.Owin.Cors.CorsOptions.AllowAll添加到Startup.Auth.cs文件中。没有XML配置。而且可能是相关的。此外,如果您在问题中也包含请求头,可能会有所帮助。UseCors不起作用,因为它也在后台添加了中间件,这些中间件不会在来自Chrome的飞行前请求中调用。当然,我已经添加了UserCors和config.EnableCors,但它没有任何效果。好的,这对您没有帮助吗?不,我没有任何xml配置,因为我自己的主机。我在问题中添加了请求标题。请阅读以下网址的答案。它不使用任何XML配置。相反,它涉及:1安装Microsoft.AspNet.WebApi.Cors nuget包、Microsoft.Owin.Cors nuget包,然后2在Startup.cs文件的WebApiConfig.Registerconfig行上方添加config.EnableCorsnew EnableCorsAttribute*、*、GET、POST、OPTIONS、PUT、DELETE,然后3将app.UseCorsMicrosoft.Owin.Cors.CorsOptions.AllowAll添加到Startup.Auth.cs文件中。没有XML配置。