te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>javascript - Cross Domain Web Workers - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Cross Domain Web Workers - Stack Overflow

programmeradmin4浏览0评论

I am aware that this question might be considered duplicate, but it is a new technology and I can not find a recent confirmation of my findings. I also think it potentially useful to have all the error messages in one place (feel free to add any other browsers).

trying to loads a worker script from another domain:

new Worker('.js');

I have set headers (using ModHeader Chrome Extension) to:

Access-Control-Allow-Methods:* Access-Control-Allow-Origin:*

But in Chrome I get:

Uncaught SecurityError: Failed to construct 'Worker': Script at 'http:otherdomain.co/worker.js' cannot be accessed from origin

Safari give me:

[Error] SecurityError: DOM Exception 18: An attempt was made to break through the security policy of the user agent

Firefox gives me:

SecurityError: The operation is insecure.

Is it still that this is not something we can do? If so, what is considered the best practise work around?

I am aware that this question might be considered duplicate, but it is a new technology and I can not find a recent confirmation of my findings. I also think it potentially useful to have all the error messages in one place (feel free to add any other browsers).

trying to loads a worker script from another domain:

new Worker('http://otherdomain.co/worker.js');

I have set headers (using ModHeader Chrome Extension) to:

Access-Control-Allow-Methods:* Access-Control-Allow-Origin:*

But in Chrome I get:

Uncaught SecurityError: Failed to construct 'Worker': Script at 'http:otherdomain.co/worker.js' cannot be accessed from origin

Safari give me:

[Error] SecurityError: DOM Exception 18: An attempt was made to break through the security policy of the user agent

Firefox gives me:

SecurityError: The operation is insecure.

Is it still that this is not something we can do? If so, what is considered the best practise work around?

Share Improve this question asked May 30, 2014 at 11:29 Mild FuzzMild Fuzz 30.7k34 gold badges105 silver badges151 bronze badges 1
  • just stumbled across this: stackoverflow./a/21771754/1667461 – escapedcat Commented Jan 26, 2016 at 15:20
Add a ment  | 

3 Answers 3

Reset to default 7

I know it's a little late now, but is this what you're looking for?

"Creates a url for the specified blob that can be passed to methods that expect a url. When done with the returned url, call revokeObjectURL() to free the resources associated with the created url."

This method easily allows you to create a Worker using a local script instead of a remote url.

You are not allowed to create cross-domain web workers.

Note : The URI passed as parameter of the Worker constructor must obey the same-origin policy . There is currently disagreement among browsers vendors on what URIs are of the same-origin; Gecko 10.0 (Firefox 10.0 / Thunderbird 10.0 / SeaMonkey 2.7) and later do allow data URIs and Internet Explorer 10 does not allow Blob URIs as a valid script for workers.

Source: https://developer.mozilla/en/docs/Web/Guide/Performance/Using_web_workers

One workaround that I can think of is to create a server-side script to load the required remote JS file, and supply it to the browser from your domain.

Eg: You supply url to :

http://YOUR_DOMAIN/getRemoteJS.php

This PHP file will request the remote file on the server side, and echo it as the response, and set mime-type to application/javascript.

I have not personally tried this workaround, but you can perhaps look into it.

Good Luck!

There's a way to run cross-origin workers with:

  • fetching JS code of the worker
  • run worker from data: string or blob:

Working solution: https://github./CezaryDanielNowak/CrossOriginWorker

发布评论

评论列表(0)

  1. 暂无评论