如何允许使用Firefox中的CSP从其他域加载Service Worker?

时间:2018-10-11 11:10:04

标签: javascript google-chrome service-worker

worker-src的{​​{1}}伪指令上的MDN article指出,使用此伪指令,应该能够为工作人员指定允许的来源(在Chrome> 59和Firefox> 58中)。

因此,如果我设置标题Content-Security-Policy,为什么我不能这样做

Content-Security-Policy: worker-src foo.com

来自new Worker('https://foo.com/worker.js') ,却在Chrome 69和Firefox 62中没有出现错误?

以下是Flask中的示例:

app.py (在bar.com)

bar.com

index.html

from flask import Flask, make_response, render_template

app = Flask(__name__)

@app.route('/', methods=['GET'])
def index():
    r = make_response(render_template('index.html'))
    r.headers.set('Content-Security-Policy', "worker-src foo.com")
    return r

worker.js (位于foo.com)

<!doctype html>
<html>
  <body>
    <h1>Hello Service Worker</h1>
    <pre id="remote-worker"></pre>
    <script>
      var remoteWorker = new Worker('https://foo.com/worker.js')
      var elRemoteWorker = document.getElementById('remote-worker')
      remoteWorker.onmessage = function(e) {
        elRemoteWorker.textContent = e.data;
      };
    </script>
  </body>

我想看到一个可以验证的示例,或者一个很好的理由,为什么它不起作用(从W3C规范中不清楚为什么不应该这样做)。

0 个答案:

没有答案