The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Ограничена ли чем-нибудь длина строки параметров?"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы WEB технологии (Public)
Изначальное сообщение [Проследить за развитием треда]

"Ограничена ли чем-нибудь длина строки параметров?"  
Сообщение от chainik (??) on 24-Сен-06, 11:16 
Не удается прочитать CONTENT_LENGTH символов (метод POST) из входного потока.

В чем может быть дело?

Скрипт написан на C++. Сервер: Apache/1.3.33, стоит на Slackware 10.1, ядро 2.6.17.7
Браузер, которым посылаются данные - Firefox 1.5.0.5, метод - POST.

getenv("CONTENT_LENGTH") выдает значение большее, чем потом может прочитать read(0,.....
В моем случае getenv("CONTENT_LENGTH") выдает значение 9405, а при попытке прочитать 9405 символов вызовом read(0, sQuery, 9405) в буфер sQuery записывается только 7656 символов.

Код, которым я пытаюсь прочитать строку:

p = getenv("CONTENT_LENGTH");
if((p != NULL) && (*p != '\0')) {
size_t sz = strtoul(p, NULL, 10);
char tmpbuf[1024]; sprintf(tmpbuf, "%u", sz); message(tmpbuf);
if(sz > (size_t)0llu) {
  sQuery = (char*)calloc(sz + 1, sizeof(char));
  if(sQuery != NULL) {
   free_sQuery = -1;
   sz = read(0, sQuery, sz);
   sQuery[sz] = 0;
   p = &sQuery[sz - (size_t)1]; if(*p == '\n') *p = '\0';
  }
}
}

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Ограничена ли чем-нибудь длина строки параметров?"  
Сообщение от ноне on 24-Сен-06, 12:05 
http://httpd.apache.org/docs/1.3/mod/core.html
-->
LimitRequestBody directive
LimitRequestFields directive
LimitRequestFieldsize directive
LimitRequestLine directive


>Не удается прочитать CONTENT_LENGTH символов (метод POST) из входного потока.
>
>В чем может быть дело?
>
>Скрипт написан на C++. Сервер: Apache/1.3.33, стоит на Slackware 10.1, ядро 2.6.17.7
>
>Браузер, которым посылаются данные - Firefox 1.5.0.5, метод - POST.
>
>getenv("CONTENT_LENGTH") выдает значение большее, чем потом может прочитать read(0,.....
>В моем случае getenv("CONTENT_LENGTH") выдает значение 9405, а при попытке прочитать 9405
>символов вызовом read(0, sQuery, 9405) в буфер sQuery записывается только 7656
>символов.
>
>Код, которым я пытаюсь прочитать строку:
>
>p = getenv("CONTENT_LENGTH");
>if((p != NULL) && (*p != '\0')) {
> size_t sz = strtoul(p, NULL, 10);
> char tmpbuf[1024]; sprintf(tmpbuf, "%u", sz); message(tmpbuf);
> if(sz > (size_t)0llu) {
>  sQuery = (char*)calloc(sz + 1, sizeof(char));
>  if(sQuery != NULL) {
>   free_sQuery = -1;
>   sz = read(0, sQuery, sz);
>   sQuery[sz] = 0;
>   p = &sQuery[sz - (size_t)1]; if(*p == '\n') *p
>= '\0';
>  }
> }
>}


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

2. "Ограничена ли чем-нибудь длина строки параметров?"  
Сообщение от chainik (??) on 24-Сен-06, 15:26 
>LimitRequestBody directive
>LimitRequestFields directive
>LimitRequestFieldsize directive
>LimitRequestLine directive

Кажется, в моем случае эти ограничения связаны с браузером. Я попробовал отправить данные интернет эксплорером, и все было получено сервером. В моем случае проявилась какая-то из особенностей настроек по умолчанию Firefox.

Кроме того, в описаниях упомянутых директив часто можно встретить замечания типа
"The value should be increased if normal clients see an error response from the server that indicates too many fields were sent in the request."

У меня же сервер не ругался, а просто недополучал строчку, причем криво выставлялась длина этой строчки. В общем, если в браузере по умолчанию стоит такое жесткое ограничение, то не остается другого выхода, кроме как оптимизировать форму.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру