2012-06-29 33 views
3

在我的應用程序,我需要有這將打開火狐(如果尚未打開)按鈕,執行POST請求包括文件上傳,並顯示結果頁面給用戶(進一步導航)。以編程方式打開Firefox並執行POST請求? [想法:MozRepl,建議]

從我發現到現在爲止,這似乎需要使用一個Firefox擴展,像MozRepl或JSSH的,這樣我就可以連接到通過Telnet進程或SSH從我的應用程序。有其他方法嗎?我接受好的建議......

然後我會需要使用content.XMLHttpRequest創建一個POST請求:

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

但是進來[...]有某種方式是從本地窗體構建的File對象;但我怎樣才能實例化並填充一個自己?我如何讓頁面結果在Firefox中顯示?

我可以寫一個臨時文件到硬盤,並從那裏讀它,或者直接通過Javascript/MozRepl寫文件的內容,都是對我來說可以接受的(但1)可能還沒有爲Javascript)。

在此先感謝, -M。

+1

您的應用程序使用哪種語言?它主要與它有關。我不認爲你想打開Firefox,但用戶的瀏覽器。 –

+0

確實如此,但它將是一個內部應用程序,我們在這裏使用Firefox。所以我會限制自己使用Firefox,因爲在所有瀏覽器中可能沒有通用的解決方案來做這件事......(這是學術科學軟件的世界) 編輯:語言主要是R部分工作的部分,RExcel/VBA爲前端。 (不,我真的不喜歡RExcel和VBA,FWIW :)) – meow

回答

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>'" 

或者你可以創建一個HTML文件,該文件會重定向GET來POST,然後使用將會像如下:

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

這種技術被描述at this superuser answer有用於這樣的文件的源代碼。這個HTML文件是不是被迫成爲當地

注意,它可以放在遠程服務器上。但考慮到遠程文件瀏覽器將通知最終網站有關您的重定向頁面爲HTTP Referer。

0

你不能做一個GET請求到服務器上的另一個頁面包含發送到POST請求AJAX代碼嗎?你可以隨時打開一個瀏覽器,使用任何可能包含查詢字符串的URL,而不需要任何花哨的API(例如system('firefox.exe http://stackoverflow.com')。這樣,你就不需要擔心瀏覽器的交互問題了)

除此之外,爲什麼不只是發出POST請求在您的應用程序,並在應用中展示的結果

+0

嗯,關鍵是服務器不是* my *服務器,它是一個公開可用的帶有Web前端的數據庫。我們自己託管了服務器應用程序的一個實例,但通過在服務器端添加專有內容真正構建解決方案並不是我最喜歡的解決方案。 – meow

+0

>除此之外,爲什麼不在應用程序中創建POST請求並在應用程序中顯示結果? 因爲這意味着我不得不爲用戶提供一個像樣的界面,以繼續在結果頁面上瀏覽。這可能是我想花費的最後一件事:) 該軟件旨在首先進行SOAP查詢並顯示結果本身 - 如果用戶發現它們有趣,他應該能夠在更多由Web應用程序提供的高級界面,這超出了我的應用程序的範圍。 – meow

0

在命令行:?

firefox --new-window www.example.com 

將打開火狐的一個新的窗口,並導航到你給它的URL這聽起來像你可以只需使用您的POST目標作爲URL,但如果沒有,您可以隨時訪問一個頁面,使得$ .POST調用。

+0

_>但如果不是,你總是可以進入一個頁面,使一個$ .POST呼叫._ 當我嘗試這是不成功的,也許是因爲XSS的安全問題? – meow