【发布时间】:2022-02-08 21:57:54
【问题描述】:
基本上,我想知道是否由公司 (https://documenu.com/) 来“修复”他们的某个端点,或者它是否与我的代码有关。
我用下面相同的代码尝试了几乎所有其他端点(https://documenu.com/docs),除了这里讨论的那个之外,它们都运行良好。
我得到的错误信息是:
确保 CORS 响应标头值有效
跨域资源共享 (CORS) 请求因以下原因而被阻止 请求或相关联的无效或缺少响应标头 预检请求。
要解决此问题,请确保响应 CORS 请求和/或 关联的预检请求不缺少标头并使用有效 标头值。
请注意,如果一个不透明的响应就足够了,那么请求的模式可以 设置为 no-cors 以获取禁用 CORS 的资源;那样 CORS 标头不是必需的,但响应内容不可访问 (不透明)。
我已经尝试通过 Node 使用,Live-reload 但没有。
我阅读了有关 CORS 的信息,据我了解,公司应将 CORS 添加到他们的回复标题中。
你们觉得呢?
感谢您的帮助
const api = apiKey;
const myHeaders = new Headers();
myHeaders.append('x-api-key', api);
const requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow',
mode: 'cors',
};
const endpoint = 'https://api.documenu.com/v2/menuitems/search/geo?lat=40.688072&lon=-73.997385&distance=1&search=buffalo%20chicken';
fetch(`${endpoint}`, requestOptions)
.then((res) => res.json())
.then((data) => console.log(data));
【问题讨论】:
-
How much research effort is expected of Stack Overflow users? -> Cross-Origin Resource Sharing (CORS) - HTTP | MDN: "跨域资源共享 (CORS) 是一种基于 HTTP 标头的机制,允许服务器指示任何浏览器应允许从其加载资源的来源(域、方案或端口)。"
-
是的。 CORS 是需要放在服务器端的东西
-
@DanielW。问题:“基本上我想知道公司是否可以“修复”他们的一个端点” - 答案:“CORS 允许服务器......”(在任何有关 CORS 的文档中都有解释)
-
@Andreas 因为还有其他机制,例如在维基百科中使用的机制,例如需要额外的 URL 参数才能使 CORS 工作(它实际上取决于实现)。因此,作为这样一家公司的终端消费者,如果某些事情没有按预期工作,那么双方都提出疑问是完全可以理解的。
-
@DanielW。那么这将是一个应该关闭的“阅读手册”问题。
标签: javascript api cors fetch