javascript - MTurk 上的 jQuery,为什么 Chrome 报告 "Unsafe JavaScript attempt to access frame with URL"?

标签 javascript jquery iframe cross-domain mechanicalturk

我在 MTurk HIT 中用 jQuery 做了一些事情,我猜其中一个是罪魁祸首。我不需要从 iframe 访问周围的文档,所以如果我需要,我想知道发生了什么以及如何阻止它!

否则,MTurk 可能会做一些不正确的事情(例如,他们使用 5 个字符的标记 & 来分隔 iframe URL 中的 URL 参数,因此他们肯定会做不正确的事情)。

以下是可能导致问题的片段。所有这些都来自嵌入在 MTurk HIT**(及相关)页面中的 iframe:

  1. 我将我的 JS 嵌入到 $(window).load() 中。据我了解,我需要使用它而不是 $(document).ready() 因为后者不会等待我的 iframe 加载。如果我错了,请纠正我。

  2. 我还在 window.location.href 上运行 RegExp.exec 以提取 workerId。

如果这是重复的,我提前道歉。确实 - 在写完这篇文章之后,SO 似乎对此做出了很好的猜测:Debugging "unsafe javascript attempt to access frame with URL ... " .如果我比你先弄清楚,我会回答这个问题。

如果能获得有关在何处学习此类内容的高级引用资料,那就太好了。它不适合我所知道的任何主题 - 也许学习跨站点脚本可以避免它?

** 如果您不知道,MTurk HIT 是人们在 MTurk 上执行任务的工作单元。如果您导航到 http://mturk.com,您可以很快看到它们的样子。并查看 HIT。

我已经从 inject.js 文件追踪代码到以下在 jquery 中运行的代码块:

尝试 { isHiddenIFrame = !isTopWindow && window.frameElement && window.frameElement.style.display === "无"; } 捕获(e){}

最佳答案

我在通过 Chrome 在 MechanicalTurk 中运行 jQuery 时遇到了类似的问题。 我的解决方案是下载我想要的 jQuery JS 文件,然后将它们上传到安全的亚马逊 S3 服务。
然后,在我的 HIT 中,我在新家 https://s3.amazonaws.com 调用了 .js 文件。 .

有关如何根据 Chrome 标准使代码“安全”的提示如下: http://developer.chrome.com/extensions/contentSecurityPolicy.html

关于javascript - MTurk 上的 jQuery,为什么 Chrome 报告 "Unsafe JavaScript attempt to access frame with URL"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16024085/

相关文章:

javascript - 网站部署时 href 链接不起作用

javascript - Knockout js 数据绑定(bind)属性未重定向正确的页面

javascript - 极其简单的Ajax代码不起作用

javascript - 根据选择框值添加多个输入框

jquery - 调整大小后 100% 高度 div 向上滚动

javascript - 使用 Javascript 添加 PDF 需要鼠标焦点

javascript - Magento 2 CE : Implement User Defined Quantity per Selection for Bundle Option of Select Type Checkbox

javascript - "click(e=>{"和 "click(function(e){"之间的区别

javascript - 如何在 IE 上访问 <iframe> 中加载的纯文本?

iframe - YouTube未加载高分辨率缩略图