我有一个从外部服务器(不是服务器)访问 API 的网站
为网站提供服务)通过简单的XmlHttpRequest
(见下文)。那个API
需要将用于访问服务的 API 密钥添加为请求标头。
然而,正如这些CORS https://developer.mozilla.org/de/docs/Web/HTTP/CORS请求浏览器首先执行预检请求以检查该服务器是否
支持 CORS。现在,看来服务器也想看到 API 密钥
这些预检请求由浏览器完成。是否可以通过
API 密钥也用于预检请求吗?
const req = new XMLHttpRequest();
req.open("GET", "https://some/api/endpoint");
req.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
req.setRequestHeader("x-api-key", _apiKey);
req.onload = () => {
// ...
};
req.send();
CORS 预检OPTIONS
请求完全由浏览器控制;所以不可能向其中添加请求标头。看https://fetch.spec.whatwg.org/#cors-preflight-fetch https://fetch.spec.whatwg.org/#cors-preflight-fetch。这就是为什么您发送请求的任何端点都必须设置为允许未经身份验证的OPTIONS
请求,并用200 OK
(至少只要请求触发预检,如果您添加自定义请求标头,那么它总是会触发预检,例如x-api-key
问题中的标题)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)