Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 提取请求不工作_Javascript_Fetch Api - Fatal编程技术网

Javascript 提取请求不工作

Javascript 提取请求不工作,javascript,fetch-api,Javascript,Fetch Api,我试图使用或向HTTP请求添加自定义头,X-Query-Key,但当我将其添加到请求头时,设置头时似乎失败,请求方法由于某种原因被设置为选项 当我删除标题时,它会返回到它应该做的GET 示例代码如下所示: const options = { url: url, headers: { 'Accept': 'application/json', 'X-Query-Key': '123456' //Adding this breaks the reques

我试图使用或向HTTP请求添加自定义头,
X-Query-Key
,但当我将其添加到请求头时,设置头时似乎失败,
请求方法
由于某种原因被设置为
选项

当我删除标题时,它会返回到它应该做的
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);
  });
试试这个:

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);
});
如果这不能解决问题,那可能是因为

跨源请求上的自定义标头必须由 从中请求资源的服务器。此服务器中的服务器 示例需要配置为接受X-Custom-Header 标头,以便获取成功。设置自定义标题时, 浏览器执行飞行前检查。这意味着浏览器 首先向服务器发送一个选项请求,以确定HTTP 服务器允许使用方法和标头。如果服务器是 配置为接受原始请求的方法和标头, 然后它被发送。否则,将抛出一个错误

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


听起来像CORS。谢谢-这很有效,我想我错过了
标题
-现在我遇到了CORS问题,这是我的下一个问题:我想这是因为你必须调用构造函数才能创建自己的标题。嘿,至少fetch API使COR更易于处理。新的fetchapi的真正障碍是一个。fetch对ServiceWorkers有它的用途,但实际上我发现自己仍然到处使用XHR2。