Я хочу загрузить общего пользователя с пользователем script. Проблема в том, что пользователь-script является бесплатным и не имеет бизнес-модели для размещения файла - и я не хочу использовать сервер, даже свободный, для размещения одного крошечного файла. Независимо от того, Я попробовал это, и я (конечно) получаю ту же ошибку исходной политики:
Uncaught SecurityError: Failed to construct 'SharedWorker': Script at 'https://cdn.rawgit.com/viziionary/Nacho-Bot/master/webworker.js' cannot be accessed from origin 'http://stackoverflow.com'.
Другой способ загрузить веб-пользователя, преобразовывая рабочую функцию в строку, а затем в Blob и загружая ее как рабочий, но я тоже это пробовал:
var sharedWorkers = {};
var startSharedWorker = function(workerFunc){
var funcString = workerFunc.toString();
var index = funcString.indexOf('{');
var funcStringClean = funcString.substring(index + 1, funcString.length - 1);
var blob = new Blob([funcStringClean], { type: "text/javascript" });
sharedWorkers.google = new SharedWorker(window.URL.createObjectURL(blob));
sharedWorkers.google.port.start();
};
И это тоже не работает. Зачем? Поскольку общие пользователи делятся на основе местоположения, из которого загружен их рабочий файл. Поскольку createObjectURL
генерирует уникальное имя файла для каждого использования, у рабочих никогда не будет одинакового URL-адреса и поэтому он никогда не будет использоваться.
Как я могу решить эту проблему?
Примечание: Я пробовал спрашивать о конкретных решениях, но на данный момент я думаю лучшее, что я могу сделать, это попросить более широкую решение проблемы, так как все мои попытки принципиально невозможно из-за той же политики происхождения или способа
URL.createObjectURL
работает (из спецификаций, кажется невозможным изменить полученный URL-адрес файла).Если будет сказано, если мой вопрос может быть каким-то образом улучшен или уточнен, пожалуйста, оставьте комментарий.