在我的应用程序中,我需要有一个按钮来打开Firefox(如果尚未打开),执行包括文件上传在内的POST请求,并向用户显示结果页面(用于进一步导航)。
从我到目前为止的发现来看,这似乎需要使用像MozRepl或JSSH这样的Firefox扩展,这样我就可以从我的应用程序通过Telnet或SSH连接到该进程。还有其他方法吗?我愿意接受好的建议...
然后我需要使用内容。XMLHttpRequest to create a POST request:
var req = new XMLHttpRequest();
req.open("POST", "http://myurl", true);
// [...]
req.send()
但是什么进来了[...]?以某种方式有一个从本地表单构建的 File 对象;但是我如何自己实例化和填充一个呢?如何让页面结果显示在 Firefox 中?
我可以将临时文件写入磁盘并从那里读取,也可以直接通过Javascript/MozRepl写入文件内容,这两者都是可以接受的(但1)可能不适用于Javascript)。
提前感谢,-M.
从命令行中,您可以打开一个页面,其中包含填充表单和 JavaScript,这些表单将触发此表单发布。 XSS 保护仅适用于后台 XMLHttpRequest,如果您正在发布表单并自动将浏览移动到该页面,则可以。
因此,您应该打开一个可以上传表单的网页。
但是你甚至不会被迫单独创建这个网页,你可以用JavaScript直接设置它来代替URL,就像书签一样:
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>'"
或者你可以创建一个HTML文件,将GET重定向到POST,然后用法如下:
file:///C:/getToPost?name1=value1&name2=value2#http://url.com/service
此超级用户回答中描述了此技术,其中包含此类文件的源代码。
请注意,此 HTML 文件不会强制为本地文件,它可能被放置在远程服务器上。但要考虑到,在远程文件浏览器的情况下,会通知最终网站您的重定向页面作为HTTP引用。
您不能对服务器上包含发送到 POST 请求的 AJAX 代码的另一个页面执行 GET 请求吗?您始终可以使用任何可能包含查询字符串的 url 打开浏览器,而无需任何花哨的 API(即 system('firefox.exe http://stackoverflow.com')
.这样,您无需担心浏览器交互。
除此之外,为什么不在应用程序中发出 POST 请求并在应用程序中显示结果呢?
从命令行:
firefox --new-window www.example.com
将打开Firefox的新窗口,并导航到您提供给它的URL。 听起来你可以只使用你的 POST 目标作为 URL,但如果不是,你可以随时转到一个产生 $ 的页面。开机自检呼叫。