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规范中不清楚为什么不应该这样做)。