【问题标题】:How to allow WebWorker to call HTTPS URL如何允许 WebWorker 调用 HTTPS URL
【发布时间】:2015-11-15 04:52:39
【问题描述】:

如何处理 Web Worker 中的 CORS 策略? 我想在工作人员中进行 HTTPS 调用,但它会引发以下 CORS 异常:

XMLHttpRequest 无法加载 xxxx Origin localhost 是 Access-Control-Allow-Origin 不允许的。

也许我应该提到我正在 Safari 浏览器上测试它

【问题讨论】:

  • 什么样的异常?
  • "XMLHttpRequest 无法加载 xxxx Origin localhost 不允许 Access-Control-Allow-Origin。"
  • 主文件、worker、访问文件的位置在哪里?
  • worker位于“js/worker.js”,url为外部服务器..
  • 你能在没有 Web Worker 的情况下成功地向那个 URL 发出请求吗?

标签: javascript html https web-worker


【解决方案1】:

这取决于您的网络服务器类型。例如。在 Express.js (node.js) 中,您可以这样做:

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});

其他网络服务器见本站:http://enable-cors.org/server.html

【讨论】:

    【解决方案2】:

    使用 Web Workers,您可以使用 importScripts() 注入脚本。如果你的服务器支持 JSONP,你可以直接发出这样的请求:

    importScripts('http://example.com?jsonp=HandleResponse');
    
    function HandleResponse(data) {
      // Do something with the data
    }
    

    【讨论】:

      【解决方案3】:

      我无法发表评论,所以我在“答案”中添加了我的 2 美分。 看起来您还没有配置 CORS 标头,您可以在此处遵循出色的教程: http://www.html5rocks.com/en/tutorials/cors/

      BR, 萨尔

      【讨论】:

      • 我已经检查过了,是的,它可以工作,但在工人身上却不行,这就是问题所在。有没有人有这个可能的解决方案?
      • @MasoodMoshref 您是否已验证远程服务器/域正在返回 ACAO 标头,但它仍然无法在 WebWorker 中工作?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-13
      • 1970-01-01
      • 1970-01-01
      • 2018-01-14
      • 2020-08-09
      • 2023-03-26
      • 2018-01-09
      相关资源
      最近更新 更多