当前位置: 首页 > 知识库问答 >
问题:

未处理OWIN飞行前请求

郏正信
2023-03-14

从浏览器到我的自助主机OWIN WebAPI的所有预飞行请求都不会被中间件处理。如果我从邮递员提出选项请求,它们将被处理。为什么是这样的行为?

请求URL:http://localhost:9000/api/v1/conversations/create?connectionId=13509f44-eacb-4950-8cc8-71bd37098975

请求方法:选项

状态代码:401未经授权的远程

地址:[::1]:9000

接受:/

接受编码:gzip、deflate、sdch、br

接受语言:如如如,如;q=0.8,在美国;q=0.6,en;q=0.4

访问控制请求头:内容类型

访问-控制-请求-方法:POST

连接:保持活力

主机:localhost:9000

来源:http://localhost:8080

裁判:http://localhost:8080/

User-Agent: Mozilla/5.0(Windows NT 10.0; Win64; x64)AppleWebKit/537.36(KHTML, like Gecko)Chrome/56.0.2924.87Safari /537.36

Chrome的响应标题:

内容长度:0

日期:2017年2月8日星期三04:17:26 GMT

服务器:Microsoft HTTPAPI/2.0

WWW:NTLM

邮递员的响应标题:

访问控制允许凭据→符合事实的

访问-控制-允许-起源→chrome-扩展://fhbjgbiflinjbdggehcddcbncdddomop

允许→邮递

内容长度→76

内容类型→应用程序/json;字符集=utf-8

日期→2017年2月8日星期三04:21:02 GMT

服务器→微软HTTPAPI/2.0

我在appbuilder中添加了假的中间件:

public void BuildWebApi(IAppBuilder appBuilder)
    {
        appBuilder.Use(async (ctx, next) =>
        {
            await next();
        });

并将断点放在行“等待下一步()”。因此,断点不会在浏览器发出飞行前请求时停止,并在邮递员选项响应时停止。

共有1个答案

农弘毅
2023-03-14

解决了这个问题

HttpListener listener = (HttpListener)appBuilder.Properties["System.Net.HttpListener"];
listener.AuthenticationSchemeSelectorDelegate = request =>
{
   if (request.HttpMethod == "OPTIONS")
   {
       return AuthenticationSchemes.Anonymous;
   }
};
 类似资料:
  • 问题内容: 我开发了一个PhoneGap应用程序,现在将其转换为移动网站。除了一处小故障,一切都可以顺利进行。我通过POST请求使用了某个第三方API,该API在该应用中可以正常运行,但在移动网站版本中却无法运行。 仔细查看后,似乎AngularJS(我想实际上是浏览器)正在首先发送OPTIONS请求。今天,我对CORS有了很多了解,但似乎无法弄清楚如何完全禁用它。我没有访问该API的权限(因此无

  • 我使用AJAX请求通过POST将数据发送到另一个域。因为我的内容类型不是标准的(它是JSON格式),所以需要一个飞行前请求。(使用请求方法:选项) 如维基百科跨域XHR调用图表中所述 我想知道这是否很费时,因为浏览器将必须到达服务器两次或不?也许这取决于每个浏览器的行为? 通过使用内容类型“纯文本”来避免飞行前请求,我是否获得了一些时间?

  • 我试图在本地构建一个用PHP REST框架作为我的api的Ember应用程序。Ember应用程序在提供,而api只在提供。这导致了一个CORS问题。我已经尝试了我能想到的一切,但我不断得到一个错误返回,说请求被阻止,飞行前通道没有成功。它在Firefox或Chrome上都不成功。 我已经将以下内容添加到API的文件中: 有什么想法或解决办法吗?任何帮助都很感激。谢了!

  • 我已经找了5个小时左右,但我放弃了。我的ajax get请求不起作用。 它连接到标准的C#mvc api,但我得到的只是这个错误: 无法加载XMLHttpRequesthttp://localhost:18428/api/Reservation/1?weekNumber=1. 对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许来源”标头。起源'http://localhost因

  • 我有一个Spring Boot/Spring Data REST服务,允许访问许多资源。其中一些资源(例如)可以自由访问,其他资源(例如)需要基本的HTTP身份验证。通过使用CURL测试REST服务,所有工作都按预期进行。当我试图从Angular2 web应用程序访问服务时,问题就会出现。

  • 我让这个项目在Angular 8中运行,并使用飞行前和实际的api调用api。而且我们在它的网络安全上有一个问题,因为飞行前的选项没有标题严格的传输安全性:max age=31536000;includeSubDomains,而实际的GET api有一个。 您是否知道如何以及在哪里添加严格运输安全:max-age=31536000;包括预飞行和实际请求下的子域,以便两个请求将具有相同的标头?