Программно открыть Firefox и сделать POST запрос? [идея: MozRepl, предложения?]

В моем приложении мне нужна кнопка, которая открывает Firefox (если он еще не открыт), выполняет запрос POST, включая загрузку файла, и отображает полученную страницу пользователю (для дальнейшей навигации).

Из того, что я нашел до сих пор, это, кажется, требует использования расширения 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).

Заранее спасибо, -М.

3 ответа

Решение

Из командной строки вы можете открыть страницу, которая будет содержать заполненную форму и 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 Referer.

Из командной строки:

firefox --new-window www.example.com

Откроется новое окно Firefox, и перейдите к URL-адресу, который вы даете. Похоже, вы можете просто использовать свою цель POST в качестве URL, но если нет, вы всегда можете перейти на страницу, которая делает вызов $.POST.

Не могли бы вы сделать запрос GET на другую страницу на вашем сервере, содержащую код AJAX, который отправляет запрос POST? Вы всегда можете открыть браузер с любым URL-адресом, который может включать строку запроса без какого-либо причудливого API (т.е. system('firefox.exe http://stackru.com'), Таким образом, вам не нужно беспокоиться о взаимодействии браузера.

Кроме того, почему бы просто не сделать запрос POST в приложении и отобразить результаты в приложении?

Другие вопросы по тегам