【问题标题】:Missing CORS on the response header响应标头上缺少 CORS
【发布时间】: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


【解决方案1】:

是的,你是对的,公司是解决问题的人,因为他们反对发送 CORS 标头。

使用他们网站上的 API 预览,除了你提到的那个之外,你对所有端点的工作也是正确的。

https://documenu.com/docs#preview_api

【讨论】:

    猜你喜欢
    • 2018-06-15
    • 2018-12-31
    • 1970-01-01
    • 2020-02-21
    • 2023-01-26
    • 2019-02-25
    • 2018-07-02
    • 1970-01-01
    • 2021-01-23
    相关资源
    最近更新 更多