我正在创建一个通过 JavaScript 向 API 服务器发送请求的网站,在其中一个请求中,它要求我捕获一个用于创建购物车更改的令牌,如果没有此令牌,您会收到 403 响应。响应标头具有“access-control-allow-origin: *”,这应该允许我从标头中获取我需要的内容,但它不会通过 headers.get 函数传递给我的程序。将标头标识符更改为使用“”、小写、不同的大写或其他任何内容不会在 get 函数中为我创建任何不同的结果。
这是我的代码:
const requestUrl = `${url}/carts`;
// Perform the request
try {
let response = await fetch(requestUrl, {
method: 'POST',
headers: {
'Accept': 'application/vnd.epages.v1+json',
'Authorization': at,
'Content-Type': 'application/json'
},
body: JSON.stringify(body)
});
if (!response.ok) {
const errorText = await response.text();
console.error('Error:', response.status, errorText);
} else {
const data = await response.json();
cartToken = response.headers.get("X-ePages-Cart-Token");
console.log('token: ', cartToken);
console.log('response data:', data); // Log the parsed data
}
响应标头,取自网络检查器:
HTTP/2 201
date: Thu, 22 Aug 2024 12:58:00 GMT
location: https://shop.com/carts/id
x-epages-cart-token: tokenhere
content-type: application/json
x-epages-media-type: application/vnd.epages.v1+json
x-ratelimit-limit: 300
x-ratelimit-remaining: 299
x-ratelimit-reset: 2024-08-22T12:58:30.800Z
access-control-allow-origin: *
vary: Accept-Encoding,User-Agent
content-encoding: gzip
content-length: 1529
这是按照 API 和支持指南编写的,但我无法让令牌通过。支持人员也提出了同样的请求,并且能够获得令牌,所以我完全困惑我这边出了什么问题。
最终通过创建一个代理地址来解决这个问题,该代理地址进行初始 API 调用,然后使用正确的 CORS 标头将正文和标头转发回客户端。