就这么简单。我在听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请求中吗?
答案 0 :(得分:0)
Geez,我总是必须自己找到答案:
https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
某些请求不会触发CORS预检。这些被称为“简单 的请求”,尽管是Fetch规范(定义了CORS) 不使用该术语。不会触发CORS的请求 预检(所谓的“简单请求”)是可以满足所有要求的 符合以下条件(...)
所以...
我在请求中添加了自定义标头,然后猜测是什么。它来了。我看错了例子,完全忽略了“简单的请求”问题!现在一切都按预期进行。