我为跨域请求创建了带iframe的hta应用程序,因为我无法启动自己的服务器来代理这些请求。
在主页面上,我插入了“受害者”网站的jQuery脚本和iframe,例如:google.com
<iframe name="iframe" src="http://google.com" application="yes"></iframe>
现在我必须通过iframe执行AJAX POST请求,这里是代码:
var frame = document.frames.iframe;
frame.$ = $
frame.$.ajax({
type : 'post'
url : 'http://google.com'
data : 'blablabla'
});
但是iframe给了我“No Transport”错误。但是,当我在受害者页面上执行脚本元素时,一切正常,例如:
var frame = document.frames.iframe.document;
var el = frame.createEelement('SCRIPT');
el.src = "file://urlToJs.js";
frame.appendChild(el);
通过这个例子一切正常,但我没有工作上网(我们使用本地网站)...并创建另一个js文件加载我也不想要。
请帮助我!
我尝试了什么:
似乎jQuery ajax总是使用主页来创建请求,我该如何解决这个问题?
答案 0 :(得分:0)
jquery收集脚本加载所需的一切。
你可以在jquery源文件中看到类似的内容:
(function factory( window ){ // a huge closure around the entire file
var doc = window.document;
window.$ = function(){
// do something with the "doc"
}
})( window ); // <- init with current window
所以无论你在哪里分配变量$,&#34;文件&#34;不会改变。
jquery为性能问题做了这个(可能还有别的吗?
你需要编辑jquery源,提取&#34;工厂&#34;功能......
(function factory(){})()== extract ==&gt; function factory(){}
并使用iframe的窗口调用
厂(iframe.contentWindow);
然后您可以根据需要使用iframe.contentWindow。$。