Javascript 使用fetch-only选项创建get请求是send
我正在尝试使用Fetch创建一个get请求。请求如下所示:Javascript 使用fetch-only选项创建get请求是send,javascript,ecmascript-6,request,http-get,fetch-api,Javascript,Ecmascript 6,Request,Http Get,Fetch Api,我正在尝试使用Fetch创建一个get请求。请求如下所示: fetch('https://requestb.in/14ikb6j1', { method: 'get', headers: { 'Authorization': 'Token token=xxxxx' }}); 如果我向自己的服务器发出此请求,则每次选项请求都会失败。我不明白为什么 如果我向requestbin发出此请求,首先会有一个选项请求。但是,在收到选项响应后,不会发出实际的get请求 这是request
fetch('https://requestb.in/14ikb6j1', {
method: 'get',
headers: {
'Authorization': 'Token token=xxxxx'
}});
如果我向自己的服务器发出此请求,则每次选项请求都会失败。我不明白为什么
如果我向requestbin发出此请求,首先会有一个选项请求。但是,在收到选项响应后,不会发出实际的get请求
这是requestbin收到的信息:
OPTIONS /14ikb6j1
HEADERS
Referer: http://localhost:9000/
Host: requestb.in
Total-Route-Time: 0
Via: 1.1 vegur
Accept-Encoding: gzip
Cf-Visitor: {"scheme":"https"}
Cf-Ipcountry: NL
Cf-Ray: 36edd35d1cad2b28-AMS
Cf-Connecting-Ip: 37.153.231.90
Connection: close
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
Accept: */*
Connect-Time: 1
Access-Control-Request-Method: GET
Content-Length: 0
Accept-Language: nl-NL,nl;q=0.8,en-US;q=0.6,en;q=0.4
X-Request-Id: 69b120c1-0f18-454b-a7fd-91f082252a06
Access-Control-Request-Headers: authorization
Origin: http://localhost:9000
这是chrome记录的内容:
最奇怪的是,结果我得到了
200-OK
状态。但是,控制台仍会记录以下内容:
无法加载获取API。回应
飞行前请求未通过访问控制检查:否
“Access Control Allow Origin”标头出现在请求的服务器上
资源。因此,不允许使用源“”
通道如果不透明的响应满足您的需要,请设置请求的
模式设置为“无cors”,以获取禁用cors的资源。
:9000/#/分支:1未捕获(承诺中)类型错误:无法获取
但如果我用邮递员提出这个请求,它确实有效:
如何使用身份验证标头使此get请求生效?这可能是CORS的问题。将请求发送到的服务器不允许来自其他域的请求。 检查浏览器控制台并查找错误。你可能会发现这样的事情:
fetch('https://requestb.in/14ikb6j1', {
method: 'get',
headers: {
'Authorization': 'Token token=xxxxx'
}});
无法加载获取API。回应
飞行前请求未通过访问控制检查:否
“Access Control Allow Origin”标头出现在请求的服务器上
资源。因此,不允许使用源“”
通道如果不透明的响应满足您的需要,请设置请求的
模式设置为“无cors”,以获取禁用cors的资源
'Content-Type':'application/json'
获取请求。是吗?@Forivin对不起,你是对的。更新后,删除这些内容类型标题不会改变任何东西。但如果cors被禁用,为什么我的邮递员请求会起作用?因为邮递员没有域。它的行为就像是一个普通用户打开一个网站。由于浏览器扩展邮递员获得了这些特权,而这些特权是网站自己无法获得的。这是浏览器内置的一个简单的安全功能,可以防止网站a与网站B通信,除非网站B同意。