2016-10-04 123 views
0

我尝试添加自定义标题,X-Query-Key,对HTTP请求使用Fetch APIrequest但是当我加入这个请求的头出现在设置页眉失败和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

听起来像CORS。 – Bergi

回答

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

+0

谢谢 - 这工作,猜我缺少'头部' - 现在我得到CORS问题,这是我的下一个问题:D – Geraint

+0

我认为这是因为你必须调用构造函数来创建自己的头。嘿,至少取回API使得CORS更容易处理。具有新获取API的真正障碍是[获取请求无法中止](https://github.com/whatwg/fetch/issues/27)。 fetch具有ServiceWorkers的用途,但在实践中,我发现自己仍然使用XHR2。 – amdouglas

1

请求资源的 服务器必须支持跨源请求上的自定义标头。此 示例中的服务器需要配置为接受X-Custom-Header 标头才能使提取成功。当设置自定义标题时,浏览器执行预检检查。这意味着浏览器 首先向服务器发送OPTIONS请求,以确定服务器允许使用什么HTTP 方法和标头。如果服务器配置为 接受原始请求的方法和标头,则发送 。否则,会引发错误。

所以,你将有2个要求,如果使用自定义标题,第一个与方法选项来检查服务器允许自定义页眉和之后,如果服务器响应是200 OK,并允许你原初的请求,第二个将被发送

Working with the Fetch API