[英]OWIN preflight requests are not processed
中间件不处理从浏览器到我的自托管OWIN WebAPI的所有预检请求。 如果我向邮递员提出了OPTIONS请求,则它们将被处理。 为什么会有这样的行为?
请求方法:OPTIONS
状态码:401未经授权的遥控器
地址:[:: 1]:9000
接受: /
接受编码:gzip,deflate,sdch,br
接受语言:ru-RU,ru; q = 0.8,en-US; q = 0.6,en; q = 0.4
访问控制请求标头:内容类型
访问控制请求方法:POST
连接方式:保持活跃
主机:localhost:9000
引荐来源: http:// localhost:8080 /
用户代理: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
邮递员的响应标头:
访问控制允许凭证→true
访问控制允许来源→chrome扩展名:// fhbjgbiflinjbdggehcddcbncdddomop
允许→POST
内容长度→76
内容类型→application / json; 字符集= utf-8
日期→2017年2月8日星期三04:21:02 GMT
服务器→Microsoft-HTTPAPI / 2.0
我在Appbuilder中添加了伪造的中间件:
public void BuildWebApi(IAppBuilder appBuilder)
{
appBuilder.Use(async (ctx, next) =>
{
await next();
});
并将断点放置到“ await next()”行。 因此,断点不会在浏览器发出预检请求时停止,而在邮递员OPTIONS响应时停止。
解决了
HttpListener listener = (HttpListener)appBuilder.Properties["System.Net.HttpListener"];
listener.AuthenticationSchemeSelectorDelegate = request =>
{
if (request.HttpMethod == "OPTIONS")
{
return AuthenticationSchemes.Anonymous;
}
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.