完成预检请求后,Service Worker不会发起原始请求

时间:2017-10-30 07:30:07

标签: javascript fetch service-worker fetch-api

我正在尝试使用fetch in service worker文件发出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)请求完成后,问题是“真实请求未发送”。

1 个答案:

答案 0 :(得分:0)

服务工作人员只能使用traffic served over https://(同源http://localhost请求的例外情况有限)。您的示例显示您正在针对http://cross-origin-server发出请求,虽然这显然不是真正的网址,但看起来您正在使用http://