Перейти к содержимому


Фото
- - - - -

взаимодействие с сервером с помощью Xml Api


  • Please log in to reply
15 ответов в этой теме

#1 dmitrrr

dmitrrr

    Newbie

  • Posters
  • 6 Сообщений:

Отправлено 26 Май 2009 - 13:24

 Собственно, не вопрос, а скорее наблюдение. При запросе сервер (4.70.0.200808120), видимо, не понимает 'Connection: close' в переданном http заголовке и сохраняет соединение на 15 секунд. Что не очень удобно. 

#2 Eugeny Gladkih

Eugeny Gladkih

    the Spirit of the Enlightenment

  • Dr.Web Staff
  • 5 234 Сообщений:

Отправлено 26 Май 2009 - 19:16

Собственно, не вопрос, а скорее наблюдение. При запросе сервер (4.70.0.200808120), видимо, не понимает 'Connection: close' в переданном http заголовке и сохраняет соединение на 15 секунд. Что не очень удобно.


HTTP/1.1 или HTTP/1.0?

можно просто с логом запроса при -verbosity=all

#3 dmitrrr

dmitrrr

    Newbie

  • Posters
  • 6 Сообщений:

Отправлено 29 Май 2009 - 09:44

Собственно, не вопрос, а скорее наблюдение. При запросе сервер (4.70.0.200808120), видимо, не понимает 'Connection: close' в переданном http заголовке и сохраняет соединение на 15 секунд. Что не очень удобно.


HTTP/1.1 или HTTP/1.0?

можно просто с логом запроса при -verbosity=all




HTTP/1.1


У меня нет доступа к логам. 

#4 Eugeny Gladkih

Eugeny Gladkih

    the Spirit of the Enlightenment

  • Dr.Web Staff
  • 5 234 Сообщений:

Отправлено 29 Май 2009 - 10:14

dmitrrr

не похоже:

> telnet localhost 9080
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET / HTTP/1.1
Host: localhost:9080

HTTP/1.1 302 Found
Connection: keep-alive
Content-Length: 0
Content-Type: text/html; charset=iso-8859-1
Date: Fri, 29 May 2009 07:12:13 GMT
Keep-Alive: timeout=15
Last-Modified: Fri, 29 May 2009 07:12:13 GMT
Location: /index.ds
Server: DrWebAV-DeskServer/HEAD-5.00.1.200905240 Linux/x86_64 Lua/5.1.4 OpenSSL/0.9.8g

GET / HTTP/1.1
Host: localhost:9080
Connection: close

HTTP/1.1 302 Found
Connection: close
Content-Length: 0
Content-Type: text/html; charset=iso-8859-1
Date: Fri, 29 May 2009 07:12:31 GMT
Last-Modified: Fri, 29 May 2009 07:12:31 GMT
Location: /index.ds
Server: DrWebAV-DeskServer/HEAD-5.00.1.200905240 Linux/x86_64 Lua/5.1.4 OpenSSL/0.9.8g

Connection closed by foreign host.

#5 dmitrrr

dmitrrr

    Newbie

  • Posters
  • 6 Сообщений:

Отправлено 23 Июнь 2009 - 11:34

dmitrrr

не похоже:

> telnet localhost 9080
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET / HTTP/1.1
Host: localhost:9080

HTTP/1.1 302 Found
Connection: keep-alive
Content-Length: 0
Content-Type: text/html; charset=iso-8859-1
Date: Fri, 29 May 2009 07:12:13 GMT
Keep-Alive: timeout=15
Last-Modified: Fri, 29 May 2009 07:12:13 GMT
Location: /index.ds
Server: DrWebAV-DeskServer/HEAD-5.00.1.200905240 Linux/x86_64 Lua/5.1.4 OpenSSL/0.9.8g

GET / HTTP/1.1
Host: localhost:9080
Connection: close

HTTP/1.1 302 Found
Connection: close
Content-Length: 0
Content-Type: text/html; charset=iso-8859-1
Date: Fri, 29 May 2009 07:12:31 GMT
Last-Modified: Fri, 29 May 2009 07:12:31 GMT
Location: /index.ds
Server: DrWebAV-DeskServer/HEAD-5.00.1.200905240 Linux/x86_64 Lua/5.1.4 OpenSSL/0.9.8g

Connection closed by foreign host.

Вот что я вижу, если спросить из php-скрипта:

HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 258
Content-Type: text/xml; charset=utf-8
Date: Tue, 23 Jun 2009 08:25:07 GMT
Keep-Alive: timeout=15
Last-Modified: Tue, 23 Jun 2009 08:25:07 GMT
Server: DrWebAV-DeskServer/REL-500-5.00.0.200906170 FreeBSD/amd64 Lua/5.1.4 OpenSSL/0.9.8e

#6 Eugeny Gladkih

Eugeny Gladkih

    the Spirit of the Enlightenment

  • Dr.Web Staff
  • 5 234 Сообщений:

Отправлено 23 Июнь 2009 - 11:44

dmitrrr

нужно смотреть в полные логи сервера. наверняка пыхпых шлет connection: keep

#7 dmitrrr

dmitrrr

    Newbie

  • Posters
  • 6 Сообщений:

Отправлено 23 Июнь 2009 - 13:08

dmitrrr

нужно смотреть в полные логи сервера. наверняка пыхпых шлет connection: keep




 До логов попытыюсь добраться,  но hedears формируютмя "руками", что-то вроде:


<?php
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
  echo "$errstr ($errno)<br />\n";
} else {
  $out = "GET / HTTP/1.1\r\n";
  $out .= "Host: www.example.com\r\n";
  $out .= "Connection: Close\r\n\r\n";
  fwrite($fp, $out);
  while (!feof($fp)) {
  echo fgets($fp, 128);
  }
  fclose($fp);
}
?>

#8 Eugeny Gladkih

Eugeny Gladkih

    the Spirit of the Enlightenment

  • Dr.Web Staff
  • 5 234 Сообщений:

Отправлено 23 Июнь 2009 - 14:49

есть кардинальное решение если не хочется разбираться :)

меняем

$out = "GET / HTTP/1.1\r\n";


на

$out = "GET / HTTP/1.0\r\n";


#9 pig

pig

    Бредогенератор

  • Helpers
  • 10 685 Сообщений:

Отправлено 23 Июнь 2009 - 19:10

$out .= "Connection: Close\r\n\r\n";

А если не баловаться с регистром?
$out .= &#34;Connection&#58; сlose\r\n\r\n&#34;;

Почтовый сервер Eserv тоже работает с Dr.Web

#10 Eugeny Gladkih

Eugeny Gladkih

    the Spirit of the Enlightenment

  • Dr.Web Staff
  • 5 234 Сообщений:

Отправлено 23 Июнь 2009 - 19:17

А если не баловаться с регистром?


все равно, по RFC регистр не важен

#11 pig

pig

    Бредогенератор

  • Helpers
  • 10 685 Сообщений:

Отправлено 23 Июнь 2009 - 21:10

То RFC, а то конкретная реализация. По RFC сервер должен правильно реагировать на Connection: Close, однако же не реагирует.
Почтовый сервер Eserv тоже работает с Dr.Web

#12 dmitrrr

dmitrrr

    Newbie

  • Posters
  • 6 Сообщений:

Отправлено 24 Июнь 2009 - 09:27

$out .= "Connection: Close\r\n\r\n";

А если не баловаться с регистром?
$out .= &#34;Connection&#58; сlose\r\n\r\n&#34;;

 Я пробовал оба варианта. Результат одинаковый.

#13 Eugeny Gladkih

Eugeny Gladkih

    the Spirit of the Enlightenment

  • Dr.Web Staff
  • 5 234 Сообщений:

Отправлено 24 Июнь 2009 - 10:24

То RFC, а то конкретная реализация. По RFC сервер должен правильно реагировать на Connection: Close, однако же не реагирует.


1. то, что не реагирует еще не показано, логи отсутствуют
2. именно конкретная реализация, очень хорошо известная мне :)

#14 pig

pig

    Бредогенератор

  • Helpers
  • 10 685 Сообщений:

Отправлено 24 Июнь 2009 - 16:55

Хорошо, в реализацию верю.

В порядке полного бреда - если попробовать так:
$out = &#34;GET / HTTP/1.1\n&#34;;
  $out .= &#34;Host&#58; www.example.com\n&#34;;
  $out .= &#34;Connection&#58; Close\n\n&#34;;
Без возвратов каретки.
Почтовый сервер Eserv тоже работает с Dr.Web

#15 Eugeny Gladkih

Eugeny Gladkih

    the Spirit of the Enlightenment

  • Dr.Web Staff
  • 5 234 Сообщений:

Отправлено 24 Июнь 2009 - 22:12

Без возвратов каретки.


тут каждый волен поступать с таким запросом как хочет. не соответствие RFC :)

#16 dmitrrr

dmitrrr

    Newbie

  • Posters
  • 6 Сообщений:

Отправлено 25 Июнь 2009 - 09:14

Хорошо, в реализацию верю.

В порядке полного бреда - если попробовать так:

  $out = &#34;GET / HTTP/1.1\n&#34;;
  $out .= &#34;Host&#58; www.example.com\n&#34;;
  $out .= &#34;Connection&#58; Close\n\n&#34;;
Без возвратов каретки.


Вообще, проблема решается несколькими способами. Можно прочитать хидеры , получить Content-Length и затем прочитать полученное число байт.К логам у меня нет доступа, поэтому сложно судить почему так происходит.  На этот экспиремент сейчас времени нет.


Читают тему: 1

0 пользователей, 1 гостей, 0 скрытых