【发布时间】:2018-04-11 02:57:24
【问题描述】:
我正在尝试在 service worker 文件中使用 fetch 发出 GET/POST 请求, 但它只发送 OPTIONS 请求而不发送我的原始请求。 以下是我的代码:
fetch('http://cross-origin-server/controller/function',{
headers: {
"x-app-header": 'app'
},
"mod":"no-cors"
}).then(function(response) {
console.log(response);
});
这是请求和响应标头:
请求标头
Accept:*/*
Accept-Encoding:gzip, deflate
Accept-Language:en-GB,en-US;q=0.9,en;q=0.8
Access-Control-Request-Headers:x-custom-header
Access-Control-Request-Method:GET
Cache-Control:no-cache
Connection:keep-alive
Host:192.168.1.215
Origin:http://localhost:3000
响应标头
Access-Control-Allow-Headers:Content-Type, Content-Length, Accept-Encoding, Authorization,Cache-Control, x-custom-header, x-requested-with
Access-Control-Allow-Methods:GET, OPTIONS
Access-Control-Allow-Origin:*
Cache-Control:no-store, no-cache, must-revalidate
Connection:Keep-Alive
Content-Length:21
Content-Type:text/html; charset=UTF-8
我无法理解为什么我的原始请求没有发送。 我已允许来自我的服务器端的所有来源(Access-Control-Allow-Origin:*)。 请帮忙,提前谢谢
编辑: 问题是预检(OPITONS)请求完成后“实际请求未发送”。
【问题讨论】:
-
您的控制台没有给您任何错误消息吗?在响应预检请求时,
*不是Access-Control-Allow-Origin可接受的值。 -
不,它没有给出任何错误。我还将 Access-Control-Allow-Origin 的值更改为 localhost:3000。但没有变化
-
请@Quentin 这个问题不重复,请从重复标签中删除,我也更改了这个问题的标题
标签: javascript fetch service-worker fetch-api