以编程方式打开Firefox并执行POST请求? [想法:MozRepl,建议?]

时间:2012-06-29 16:43:00

标签: javascript firefox post mozrepl

在我的应用程序中,我需要一个打开Firefox的按钮(如果尚未打开),执行包含文件上传的POST请求,并将结果页面显示给用户(以进一步导航)。

从我发现到目前为止,这似乎需要使用像MozRepl或JSSH这样的Firefox扩展,因此我可以通过Telnet或SSH从我的应用程序连接到该进程。还有其他方法吗?我愿意接受好的建议......

然后我需要使用content.XMLHttpRequest来创建POST请求:

var req = new XMLHttpRequest();
req.open("POST", "http://myurl", true);
// [...]
req.send()

但是[...]会发生什么?某种方式是从本地表单构建的File对象;但我怎样才能实例化并填写一个呢?如何让页面结果显示在Firefox中?

我可以将临时文件写入磁盘并从那里读取,也可以直接通过Javascript / MozRepl写入文件内容,两者都可以接受(但可能不适用于Javascript)。

提前致谢, -M。

3 个答案:

答案 0 :(得分:1)

从命令行,您可以打开一个页面,其中包含填充的表单和JavaScript,可以触发此表单发布。 XSS保护仅适用于后台XMLHttpRequest,如果您要发布表单并自动将浏览移动到该页面,则可以。

因此,您应该打开一个可以上传表单的网页。

但您甚至不必单独创建此网页,您可以直接使用JavaScript代替URL设置它,就像bookmarklet一样:

firefox "javascript:'<html><body onload=\'document.forms[0].submit()\'><form action=\'http://www.example.com\' method=\'POST\'><input name=\'whatever\' value=\'whatever\' type=\'hidden\'></form></body></html>'"

或者您可以创建一个将GET重定向到POST的HTML文件,然后使用如下:

file:///C:/getToPost?name1=value1&name2=value2#http://url.com/service

此技术用at this superuser answer描述,包含此类文件的源代码。

请注意,此HTML文件不是强制本地的,而是可以放在远程服务器上。但考虑到在远程文件浏览器的情况下,会将您的重定向页面作为HTTP Referer通知最终网站。

答案 1 :(得分:0)

您是否无法对服务器上包含发送到POST请求的AJAX代码的其他页面执行GET请求?您始终可以使用任何可能包含查询字符串的网址打开浏览器,而不需要任何花哨的API(即system('firefox.exe http://stackoverflow.com')。这样,您就不必担心浏览器交互了。

除此之外,为什么不在应用程序中发出POST请求并在应用程序中显示结果?

答案 2 :(得分:0)

从命令行:

firefox --new-window www.example.com

将打开Firefox的新窗口,并导航到您提供的URL。听起来你可以只使用你的POST目标作为URL,但如果不是,你总是可以去一个进行$ .POST调用的页面。