我已经为一个问题苦苦挣扎了几个小时,我希望能在实现我的目标方面得到一些帮助,或者确认我正在尝试做的事情实际上是不可能的。
我有一个 webapp,它document.getSelection()
从任意网页获取选定的文本 () 作为输入。虽然可以使用小书签相当轻松地编写此类脚本,但如果我可以使用 iframe 完成此操作,则对最终用户来说是最好的。
父框架是我使用此脚本的站点:
$('#frame').load(function(){
// this event won't be triggered
$(window).mouseup(function(){
doStuff(window.getSelection());
});
// this will throw a security error
$(window.frames[0].document).mouseup(function(){
doStuff(window.frames[0].document.getSelection());
});
});
任意站点位于子框架中。除非子文档来自我的域,否则出于 XSS 安全原因禁止访问。我尝试了几种变体并尝试了破解,包括将 iframe 设置src
为我的域,并使用第三方 URL 作为参数,然后重定向到第三方 URL。从某种意义上说,我很高兴它不起作用(因为如果它起作用了,那么XSS
安全还有很长的路要走......)
另一种选择是下载第三方页面并像代理服务器一样从我的域提供它,但我已经遇到了一堆文件的相对路径问题,这些问题有时很容易成为绝对路径,但有时是傻瓜的差事(例如通过脚本访问文件时)。
我已经得出结论,我可能只是运气不好。也许我的案例的一个重要区别是我只想访问.getSelection()
孩子的方法。无需能够访问 cookie 或击键或与 DOM 交互。也许这没有什么不同,但也许确实如此。