【问题标题】:Fetch with headers使用标题获取
【发布时间】:2017-07-06 22:19:47
【问题描述】:

当使用 fetch 在服务器中使用标头返回请求时

SyntaxError: Unexpected end of input
    at index.js:50
    at <anonymous>

第 50 行代码是 }).then(res => res.json())

有什么问题?

获取此代码。

fetch(api-url, {
          mode: 'no-cors',
          method: "POST",
          headers: {
              'Accept': 'application/json',
                        'Content-Type': ' application/json',
                        'X-API-SERVER': '85499f9f'
                    },
        }).then(res => res.json())
          .then(res => {
            if (res.status === 200){
              console.log("accepted");
            }else {
              console.log(res.error);
            }

             console.log(res.error)
          }).catch(err => console.log(err))

【问题讨论】:

  • 你能显示完整的代码吗?
  • 可以去掉第49行的逗号
  • @Chris 在第 49 行删除逗号不起作用
  • 您的 API 端点返回的不是有效的 JSON。
  • fetch响应成功时,你是否将result状态设置为给定的响应?

标签: reactjs fetch


【解决方案1】:

由于您正在请求 API,因此您不想禁用 CORS。只要您的 API 服务器也发送正确的标头 (Access-Control-Allow-Origin),只需在您的 fetch 请求中删除 mode: 'no-cors' 即可解决此问题。

【讨论】:

  • 当邮递员返回 ok 但当 fecth 在删除 no-cors 时返回这个。 Fetch API 无法加载 https://-app-dobled.herokuapp.com/api/v1/create。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'localhost:3000' 不允许访问。响应的 HTTP 状态代码为 500。如果不透明的响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用 CORS 的资源。 index.js:60 TypeError: 获取失败
  • 是的,完全正确。 Set the Access-Control-Allow-Origin header 在您的服务器路由上。你不想在这里使用no-cors。这是后端问题,而不是前端问题。
猜你喜欢
  • 1970-01-01
  • 2012-10-10
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-05
  • 2015-05-15
  • 2017-08-04
相关资源
最近更新 更多