3

在我的应用程序中,我需要一个按钮来打开 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 写入文件内容,两者都对我来说是可以接受的(但 1)可能不适用于 Javascript)。

在此先感谢,-M。

4

3 回答 3

1

您可以从命令行打开一个页面,该页面将包含已填写的表单和触发此表单发布的 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>'"

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

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

此技术在此超级用户答案中描述,并带有此类文件的源代码。

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

于 2013-12-30T22:45:02.703 回答
0

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

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

于 2012-06-29T16:47:43.000 回答
0

从命令行:

firefox --new-window www.example.com

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

于 2012-06-29T16:47:53.940 回答