我有 https://domain1.com (domain1)和 https://domain2.com (域2)。
Domain2提供包含javascript的页面,标题为“Access-Control-Allow-Origin:*”
Domain1运行一些调用的javascript代码:
new Worker("//domain2.com/script.js")
浏览器抛出安全异常。
自从开始编写这个问题以来,我已经解决了这个问题,通过ajaxing脚本,blobbing它并从中运行它,但是我错过了原始想法中的一些东西吗?
我也有同样的问题,希望这可以帮到你 https://gist.github.com/jtyjty99999/a730a17258fca04bfca3
function XHRWorker(url, ready, scope) {
var oReq = new XMLHttpRequest();
oReq.addEventListener('load', function() {
var worker = new Worker(window.URL.createObjectURL(new Blob([this.responseText])));
if (ready) {
ready.call(scope, worker);
}
}, oReq);
oReq.open("get", url, true);
oReq.send();
}
function WorkerStart() {
XHRWorker("http://static.xxx.com/js/worker.js", function(worker) {
worker.postMessage("hello world");
worker.onmessage = function(e) {
console.log(e.data);
}
}, this);
}
WorkerStart();
注意:作为Worker构造函数的参数传递的URI必须遵守
同源政策。目前存在分歧
浏览器厂商关于哪些URI是同源的; ...
引用自 https://developer.mozilla.org/en-US/docs/Web/Guide/Performance/Using_web_workers
HTML5 Worker是一个相当新的概念,但我不确定同源原因是如何应用的 XmlHttpRequest
,可以访问不同域上的资源 如果你可以控制它运行的服务器。通过访问外部域的资源 预先请求 意味着首先将OPTIONS请求发送到资源,如果对该响应的响应具有适当的访问控制头(Access-Control-Allow-Methods
, Access-Control-Allow-Origin
作为最小值,然后使用原始方法重复该请求并接收响应的资源。
你有方法设置吗?
尝试将此添加到标题中:
Access-Control-Allow-Methods: POST, GET, OPTIONS