我正在使用带有javascript blob的webworker,因为我希望能够缩小项目:
window.URL = window.URL || window.webkitURL;
var res = elements.worker.toString();
res = res.substr(res.indexOf("\n")+1,res.length-4-res.indexOf("\n"));
console.log(res)
var blob;
try {
blob = new Blob([res], {type: 'application/javascript'});
} catch (e) { // Backwards-compatibility
window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;
blob = new BlobBuilder();
blob.append(res);
blob = blob.getBlob();
}
load.workNode = new Worker(URL.createObjectURL(blob));
在浏览器中我收到CORS错误。为什么网络工作者需要CORS?我仔细检查了一下。 webworker导致CORS错误。 chrome和firefox中的错误相同。
XMLHttpRequest cannot load . Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.
在开发环境中,我正在使用带有browserfy的节点。我尝试使用npm包'cors';
启用CORSvar cors = require('cors');
var proxy = require('./proxy');
function browserSyncInit(baseDir, files, browser) {
browser = browser === undefined ? 'default' : browser;
var routes = null;
if(baseDir === paths.src || (util.isArray(baseDir) && baseDir.indexOf(paths.src) !== -1)) {
routes = {
'/bower_components': 'bower_components'
};
}
browserSync.instance = browserSync.init(files, {
startPath: '/',
server: {
baseDir: baseDir,
middleware: [proxy, cors()],
routes: routes
},
port: 4000,
browser: browser
});
}
没有成功。我该怎么办?
答案 0 :(得分:-1)
您可以使用heroku应用“ Cors Anywhere”来解决“跨源请求错误”错误, 尚未为网络工作者测试过它,但值得一试。
https://cors-anywhere.herokuapp.com
只需将上面的网址添加到您尝试创建XMLHttpRequest的网址的开头即可,因为我目前仍在学习Node&webworkers自己。.
答案 1 :(得分:-2)
通常CORS请求有一个pre请求,询问是否允许请求。您需要在目标Web服务器域请求中指定此CORS请求。除非您没有这样做,否则CORS请求将无效。这些请求实际上是必需的。
您可以通过添加CORS允许的标头来完成此操作。在nginx或apache中,只需将.htaccess文件添加到该目标文件夹即可。我猜在node.js网络服务器引擎上有一个等价物。祝你好运!