获取请求不起作用

时间:2016-10-04 23:37:52

标签: javascript fetch-api

我正在尝试使用Fetch APIrequest向HTTP请求添加自定义标头X-Query-Key,但是当我将此添加到请求的标头时,它似乎在设置标题,Request Method由于某种原因设置为OPTIONS

当我删除标题时,它会回到原来的GET

示例代码如下所示:

   const options = {
    url: url,
    headers: {
      'Accept': 'application/json',
      'X-Query-Key': '123456' //Adding this breaks the request
    }
  };

  return request(options, (err, res, body) => {
    console.log(body);
  });

2 个答案:

答案 0 :(得分:1)

  

必须支持跨源请求的自定义标头   请求资源的服务器。这个服务器   示例需要配置为接受X-Custom-Header   标头,以便获取成功。设置自定义标头后,   浏览器执行预检检查。这意味着浏览器   首先向服务器发送OPTIONS请求以确定HTTP   服务器允许使用方法和标头。如果服务器是   配置为接受原始请求的方法和标头,   然后发送。否则,将引发错误。

因此,如果使用自定义标头,您将有2个请求,第一个使用方法OPTIONS检查服务器是否允许自定义标头,之后如果服务器响应为200 OK并允许您的原始请求,则第二个将发送

Working with the Fetch API

答案 1 :(得分:0)

试试这个:

const headers = new Headers({
  "Accept": "application/json",
  "X-Query-Key": "123456",
});

const options = {
  url: url,
  headers: headers
};

return request(options, (err, res, body) => {
  console.log(body);
});

如果这不能解决问题,则可能与CORS有关。