我有一个从外部服务器(不是服务器)访问 API 的网站
为网站提供服务)通过普通的 XmlHttpRequest
(见下文)。那个API
需要用于访问服务的 API key 添加为请求 header 。
但是,由于这些是 CORS
请求浏览器首先执行预检请求以检查该服务器是否
支持 CORS。现在,服务器似乎也想在中查看 API key
这些由浏览器完成的预检请求。是否可以通过
API key 也用于预检请求?
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
请求完全由浏览器控制;所以不可能向它添加请求 header 。参见 https://fetch.spec.whatwg.org/#cors-preflight-fetch .这就是为什么您发送请求的任何端点都必须设置为允许未经身份验证的 OPTIONS
请求,并用 200 OK
响应它们(至少只要请求触发预检,如果您添加自定义请求 header ,例如问题中的 x-api-key
header ,它总是会这样做。
关于javascript - 是否可以向 CORS 预检请求添加请求 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58547499/