.exe в качестве cgi...
Допустим у меня на странице такая форма:
<form action="/cgi-bin/gw1.exe" method="GET">
<input type=text size=50 name=test value="Бла... бла... бла...">
<input type=submit value="Проверить">
</form>
----------------------------------------------------------------
После нажатия на кнопку "Проверить" шлюз gw1.exe как и положенно
получает с формы данные, куда надо их записывает и завершается -
но вот браузер Internet Explorer-зараз ещё и пытается открыть страницу
gw1.exe!!!!, а FireFox - вообще пытается скачать gw1.exe с сервера!!! -
Кошмар!!!
Как сделать так чтоб после выполнения .exe-шлюза - оставалась
открытой всё та же страница и браузеры не рыпались что-либо делать
с .exe-шником????
А для того чтобы .exe не сохранялся на твердый диск - надо настроить твой уеб сервер, что бы он он оисполнял этот файл, а не выплевавал ;)=
Так он и исполняется, а сохрнаиться он пытается только если открывать
страницы через FireFox.
И в настройках сервера прописано:
AddHandler cgi-script .bat .exe .cgi .pl
-------------------------------------------------------------
AJAX - это что за модное слово, можно подробней?
PHP все привыкли, что автоматом делает, а вот кто Перлом занимался про такую вещь знают. Если в Перле не указать тип данных, браузер тоже его попытается сохранить.
На exe обычно тип данных application/octet-stream или что своё в зависимости от браузера и расширения, в любом случае сохранять кинется.
Попробуй сменить на cgi - тоже сохранять будет, если правильный тип данных не задашь.
cgi - это .exe-программы они не являются сценриями - по идее сервер
не только пытается выполнить, но и открыть .exe (а firefox - при открытии видит .exe и раз уж не может открыть, так пытается хотя бы сохранить)
------------------------------------------------------------
Как то надо поменять настройки сервера, чтоб .cgi -только выполнялись
и не открывались - т.е. не выполнялся переход на .cgi.
--------------------------------------------------------------
Сейчас у меня настройки директории cgi-bin такие:
<Directory "F:/WebServer/Apache/cgi-bin">
AllowOverride All
Options ExecCGI
</Directory>
Общие настройки для всех директории такие:
<Directory />
Options ExecCGI FollowSymLinks Includes Indexes MultiViews
AllowOverride All
</Directory>
--------------------------------------------
Может что-то поменять?
Не знаю про Перл, но если извращаться и писать сценарии на C++, и не указать контент-тип, просто произойдет ошибка 500.
(Я PHP и Perl в глаза то ни разу не видел, и кстати желания увидеть нету.)
---------------------------------------------------------------------
Где этот контент тайп указать?
Где этот контент тайп указать?
Гм, ты выдаешь заголовок вначале работы твоего бинарника или нет?
т.е. что то вроде
printf("Content-Type: text/html\n\n");
... твой код
exit(0)
}
Про AJAX - как пример на этом форуме - быстрый ответ на сообщение.
Gmail, Google Maps, Metacafe, YouTube, etc
printf("Content-Type: text/html\n\n");
... твой код
exit(0)
}
Не обязательно знать PHP и Perl, но необходимо знать хотя бы эти азы CGI, поскольку вопрос из области "учите матчасть" ;)
Ну так что, указание типа содержимого помогло? Не томи ;)
На С++ и С не пишутся сценарии. даже если это CGI программа )
Так это что получается?! - всё что я передаю в stdout будет обработано
браузером? - и можно даже сценарии прямо C++ кодом написать?!?
------------------------------------------------------------------
Самый актуальный вопрос:А что нужно выдать в stdout, чтобы попросить
браузер перейти на другую страницу?
Так это что получается?! - всё что я передаю в stdout будет обработано
браузером? - и можно даже сценарии прямо C++ кодом написать?!?
;))))
Да, по своей сути cgi - это элементарная работа с текстом, т.е проще говоря набо условий при котором этот текст понимается ;)))
Отсюда, как раз такое получается ты можешь сделать cgi скрипт на той платформе которая тебе нравится и которая может работать с текстом ;)=
Самый актуальный вопрос:А что нужно выдать в stdout, чтобы попросить
браузер перейти на другую страницу?
Это нарырается редирект. а выдаешь на такой же манер.
printf ("Location: SOME_URL\n\n");
А вообще, на почитать - ключевые слова RFC 2616 'Hypertext Transfer Protocol' ж)=