【问题标题】:Service Worker does not initiate original request after completing the preflight request完成预检请求后,Service Worker 未发起原始请求
【发布时间】: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


【解决方案1】:

Service Worker 只能使用 traffic served over https://(同源 http://localhost 请求的有限例外)。您的示例表明您正在向 http://cross-origin-server 发出请求,虽然这显然不是一个真实的 URL,但看起来您正在使用 http://

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    • 2016-04-01
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多