Mic*_*ael 3 javascript browser http xmlhttprequest cors
我有一个网站,它通过普通XmlHttpRequest(见下文)从外部服务器(不是为网站提供服务的服务器)访问 API 。该 API 需要一个 API 密钥来访问要添加为请求标头的服务。但是,由于这些是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();
Run Code Online (Sandbox Code Playgroud)
CORS 预检OPTIONS请求完全由浏览器控制——因此不可能向其中添加任何请求标头。请参阅https://fetch.spec.whatwg.org/#cors-preflight-fetch。这就是为什么您向其发送请求的任何端点都必须配置为允许未经身份验证的OPTIONS请求,并以200 OK- 至少只要您的请求触发预检(如果您添加任何自定义请求标头,例如x-api-key问题中的标题)。
| 归档时间: |
|
| 查看次数: |
1331 次 |
| 最近记录: |