![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| GarryFV |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 11.10.2002 Репутация: нет Всего: нет |
При выводе на С нескольких Header-ов первый корректно обрабатывается сервером, а остальные понимаются просто как текст.
Краткий пример: #include <stdio.h> #include <fcntl.h> #include <io.h> #define header(STR) printf(STR); printf("%c%c",10,10); #define br printf("<br>") void main(void){ _setmode( _fileno( stdout ), _O_BINARY ); header("Server: NETstat/Forwarder/1.0 build: Jan 30 2001 00 header("Connection: Close"); } При просмотре из браузера видим: Connection: Close Тот же самый код на PHP, естественно, не выводит ничего, т.к. сервером обрабатываются оба Header-a. Может знает кто в чем дело? А может кто-нибудь еще и ответит Заранее спасибо. |
|||
|
||||
| Mike Kostyuhin |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 9.10.2002 Репутация: нет Всего: нет |
#define header(STR) printf("%s\r\n", STR);
#define br printf("<br>") void main(void){ _setmode( _fileno( stdout ), _O_BINARY ); header("Server: NETstat/Forwarder/1.0 build: Jan 30 2001 0001"); header("Connection: Close"); } |
|||
|
||||
| GarryFV |
|
|||
|
Unregistered |
Ни фига!!
Internal Server Error Так сервак вообще не воспринимает это как ответ cgi скрипта В доке сказано - после header-a обязательно должна быть пустая строка |
|||
|
||||
| Fantasist |
|
|||
|
Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 4 Всего: 41 |
А
#define header(STR) printf(STR); printf("%c%c",13,13); ? или #define header(STR) printf(STR); printf("%c%c",13,10); ? или #define header(STR) printf(STR); printf("%c%c%c%c",13,10,13,10); ? -------------------- Волны гасят ветер... |
|||
|
||||
| GarryFV |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 11.10.2002 Репутация: нет Всего: нет |
Да не работает!
Первые 2 примера - просто ошибка исполнения скрипта: 500 Internal Server Error т.к. после Headera обязательно должна быть еще одна пустая строка (а два CR(13) это просто "возврат каретки"). А когда есть пустая строка, то, как я говорил, обрабатывается только первый header. Ну кто писал cgi на с, отзовитесь! Или все на PHP, Perl-e и т.д. колбасят? :) Ну ведь, очевидно, настолько простая вещь, что даже в мануалах не описана. Или может какую настройку для Apache надо изменить? Такая хрень и весь проект тормозит!!! Помогите, братья программеры!!! :) |
|||
|
||||
| Fantasist |
|
|||
|
Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 4 Всего: 41 |
Хм, вроде было наоборот - 13 - перенос строки 10 - возврат каретки.
Или что, я всю жизнь ошибался? Вообще-то я не знаю откуда два хеадера. За всю свой небольшой опыт по HTTP, загаловок там всегда один. А зачем несколько загаловков? -------------------- Волны гасят ветер... |
|||
|
||||
| GarryFV |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 11.10.2002 Репутация: нет Всего: нет |
Выходит, ошибался :)
Зачем два Header-a? А если надо передать и "Server:..." и "Connection:..." и еще cookie записать "Set-Cookie:..."? То что делать? Вот PHP код - как это должно быть на C? header("Server: NETstat/Forwarder/1.0 build: Jan 30 2001 00:00:01"); header("Connection: Close"); header("Set-Cookie: netstat_ct=$sql_ClientId;expires=Fri, 30-Jan-2004 00:00:01 GMT;path=/;domain=.netstat.by"); header('P3P: policyref="/w3c/p3p.xml", CP="NON DSP COR CUR ADM DEV PSA PSD OUR UNR BUS UNI COM NAV INT DEM STA"'); header("Cache-Control: no-cache, must-revalidate"); header("Pragma: no-cache"); P.S. А я CGI первый раз программлю - друг подкинул работенку - небольшой модулек с PHP на С перевести. Типа за пару дней один к одному переписать? ВОт неделю уже трахаюсь, т.к. там оказалась и работа с БД MySQL и создание картинок "на лету" и т.д., блин ;). Так все остальное дерьмо победил, а какие-то долбаные Header-ы не пашут, аж обидно!!!! |
|||
|
||||
| Fantasist |
|
|||
|
Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 4 Всего: 41 |
Хе!
Так это-же один хеадер так тебя за ногу! -------------------- Волны гасят ветер... |
|||
|
||||
| Fantasist |
|
|||
|
Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 4 Всего: 41 |
Вот это я получил с сервера forum.vingrad.ru.
Первый абзац - загаловок, второй - текст. И не могло быть по другому, потому как если ставить после каждой строчки пустую строку, то как тогда узнать что загаловок кончился. Ты просто так хитро вопрос поставил CGI headers, что я долго тормозил, не понимая о чем ты говоришь. -------------------- Волны гасят ветер... |
|||
|
||||
| GarryFV |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 11.10.2002 Репутация: нет Всего: нет |
Да, наверное так!!!
Я уже и сам стал думать, что этот чертов PHP интерпретатор все Header-ы в один объединяет, а потом выводит. Только опять же, а мне как их разделять? Через ';' ? printf("Server: NETstat/Forwarder/1.0 build: Jan 30 2001 00:00:01; Connection: Close; Set-Cookie: cookiethree=89\n\n"); Вот в этом случае, например, не записываются cookie :( А если переставляю printf("Set-Cookie: cookiethree=89; Server: NETstat/Forwarder/1.0 build: Jan 30 2001 00:00:01; Connection: Close\n\n"); то cookie записываются, но тогда у меня подозрение, что просто отрабатывает опять же только первый Header, а остальные хрен его знает... |
|||
|
||||
| GarryFV |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 11.10.2002 Репутация: нет Всего: нет |
Тьфу ты, бл#!!!
Наконец то дошло!!! После каждого Header-a(т.е. одной строки Header-a) надо "\n", т.е. 10 А после последней строки "\n\n", и все работает!!! Через define-ы тут не сделаешь... Ну спасибо тебе, добрый фей, если б рядом жили - пиво однозначно А так только удовлетворение, что помог человеку |
|||
|
||||
| GarryFV |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 11.10.2002 Репутация: нет Всего: нет |
P.S. Извиняюсь за жуткое ламерство, просто как говорил, первый раз пишу по надобности. Ни фига в этом вопросе не шарил
|
|||
|
||||
| Fantasist |
|
||||
|
Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 4 Всего: 41 |
Ну, слава богу.
Так все и учимся. -------------------- Волны гасят ветер... |
||||
|
|||||
| GarryFV |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 11.10.2002 Репутация: нет Всего: нет |
Учение - жизнь! Неучение - смерть.
Как только перестал что-то постигать, считай - помер |
|||
|
||||
| Vaulter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1724 Регистрация: 30.12.2002 Где: бункер Репутация: 2 Всего: 22 |
ALL. полазил по сайтам - ненашел нормальных доков по CGI в С++
как начать? хочу =)) |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |