HttpListener没有收到OPTIONS请求

时间:2018-07-30 19:13:43

标签: c# http cors

就这么简单。我在听HttpListener。现在让我们忽略其余的代码。只是听者在听。

我配置了2个测试网站:“ local-site-a.com”和“ local-site-b.com”。我通过在主机文件中添加以下内容来配置它们:

127.0.0.1   local-site-a.com
127.0.0.1   local-site-b.com

站点B托管在IIS中,站点A映射到我的HttpListener

然后我有我的JS:

async start() {

    var response = await fetch("http://local-site-a.com/add/2/2", { "method": "get", "mode" : "cors", "credentials": "include" });
    var result = await response.json();
    console.dir(result);

}

CORS?十分简单。我读了所有。捕获预检(“ OPTIONS”请求),并以标题作为标题响应。我在Internet和堆栈溢出上所能读到的全部内容是要确切响应的,这不是这里的问题。

我什至没有想到这里会有任何问题,但是无论如何...

问题是我什至没有收到“ OPTIONS”请求。我的HttpListener捕获到的第一件事是“ GET”请求,这意味着它只是忽略了“ OPTIONS”请求,对吗?

我在GET请求中获得了“ Origin”标头。不应该在OPTIONS请求中吗?

1 个答案:

答案 0 :(得分:0)

Geez,我总是必须自己找到答案:

https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

  

某些请求不会触发CORS预检。这些被称为“简单   的请求”,尽管是Fetch规范(定义了CORS)   不使用该术语。不会触发CORS的请求   预检(所谓的“简单请求”)是可以满足所有要求的   符合以下条件(...)

所以...

我在请求中添加了自定义标头,然后猜测是什么。它来了。我看错了例子,完全忽略了“简单的请求”问题!现在一切都按预期进行。