🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.www.server-side
16 messages
16 total messages Started by marek.horodyski Sat, 03 Aug 2013 00:50
Dziwne requesty
#61465
Author: marek.horodyski
Date: Sat, 03 Aug 2013 00:50
87 lines
6110 bytes
Dobry wieczór :)
Startuję z serwowaniem www. Na razie nie mam czasu coś więcej stworzyć, ale serwer stoi i takie puste strony może wystawić. Stoi se i "słucha",  a tu takie niespodziewane wołania się pojawiają, co do obsługi których mam szereg wątpliwości i w związku z tym pytań :
------------------
83.212.111.98: 
GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1
Potem "entery" i nic więcej. Odpowiedź poszła 404. Ale co to było ?!
------------------
46.36.35.233:
GET / HTTP/1.0
i po tym 2 entery, nic więcej. Więc odpowidź poszła 400, ale może powinna 303, spróbuj - tylko co dalej ? Z jakiej domeny ? Podobny problem będzie opisany niżej z googlem.
------------------
183.60.48.25:
CONNECT tcpconn2.tencent.com:443 HTTP/1.1
Host: tcpconn2.tencent.com:443
Accept: */*
Content-Type: text/html
Proxy-Connection: Keep-Alive
Content-length: 0

Oprogramowany jest tylko GET i POST, myślę o zaimplementowaniu też PUT, ale to później. Więc na razie serwer odpowiedział 501 Not implemented. Ale co to wogóle za żądanie było ? Kto i co chciał? Jaki connected?
------------------
96.254.171.2:
GET http://server5.cyberpods.net/azenv.php HTTP/1.1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28 (.NET CLR 3.5.30729)
Host: server5.cyberpods.net
Accept-Encoding: deflate, gzip
Proxy-Connection: Keep-Alive
Accept-Language: en-gb,en;q=0.5
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Pragma: no-cache
Cache-Control: no-cache

W ogóle nie kumam co on chciał - daje GET i jakiś adres, zamiast tam (bezpośrednio na ten adres) się dobijać. Dostał w odpowiedzi 404 not found. Już po HTTP/1.1, dużo zeznaje, ale czgo chce? Dobrze odpowiedziałem ?
------------------
62.236.108.240:
80.82.64.227:
GET http://gameframe.net/headers HTTP/1.1
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686 on x86_64; rv:20.0) Gecko/20100101 Firefox/20.0
Host: gameframe.net
Accept-Encoding: deflate, gzip
Proxy-Connection: Keep-Alive
Accept-Language: en-gb,en;q=0.5
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Pragma: no-cache
Cache-Control: no-cache

Z tego drugiego adresu różnice w nagłówku :
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0

Też po GET dali link, a więc też dostali 404. Dobrze czy nie ?
------------------
Szereg strzałów z adresów:

96.254.171.2, 62.236.108.240, 80.82.64.227

gdzie albo tekst był szyfrowany, albo to jakiś śmietnik jest. Same robaki. Albo same entery. Nic sensownego. Znaków od kilku do kilkunastu conajwyżej. Próbuje je zrozumieć, i te robaki NOTEPAD++ rozkodowuje mniej więcej na symbole (tu jedno przykładowe żądanie, rozdzielam symbole znakiem |): EOT|SOH|NUL|P????NUL

Te ? już z zakresu drukowalnego, ale chyba powyżej 128.
Cóż to za wywołania? Te znaki są różne w różnych wywołaniach. Występowały w krótkich seriach, czyli wyglądało to na jakąś próbę nawiązania porozumienia lub negocjację. Nie wiedząc jak zareagować, serwer odpowiadał 400 Bad Request. Czego wołający chcieli ?
------------------
I chyba najciekawsze, 2 razy, ( po 3 dniach 2 raz) z adresu 198.100.145.163:
GET http://www.google.com/ HTTP/1.0
Host: www.google.com
Accept: text/html
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Proxy-Connection: close

i raz z adresu 77.253.247.100:
GET http://www.google.pl/search?hl=pl&q=blog HTTP/1.1
Host: www.google.pl
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Accept: */*
Accept-Language: zh-cn
Connection: Keep-Alive

Czyli coś od googla. Ale serwer oczekuje bardo konkretnego wywołania, i spodziewał się, że jak klient zadziała w ciemno, to poprosi "GET /", a nie GET z jakąś domeną w pierwszej linii. Natomiast w polu host spodziewałem się domeny z którą klient chce rozmawiać. W związku z tym w odpowiedzi dostały 404 not found. Ale googla powinno się chyba lepiej potraktować - ale co mu odpowiedzieć ? Spróbuj 303 index.html ? Ale z jakiej domeny ?
Dla wywołania "GET /" po IPv4 a nie konkretnej domeny serwer przygotowuje stronkę z listą obsługiwanych domen. Ale co odpowiedzieć w takim przypadku ?  Czy traktować googla inaczej niż gameframe.net ?
Nie gram w żadne gry - czego ktoś się dobija i w jakiej sprawie ?
------------------

Widzę jeszcze, że zdarza się ( i to m.in. od google.com!) HTTP/1.0, a ja myślałem, że to dawno is dead. Widzę, że serwer jak dostanie HTTP/1.0 to nieraz też odpowiada HTTP/1.0, ale 400 Bad Request odpowiada HTTP/1.1. Ale w jakieś większe różnice pomiędzy 1.0 a 1.1 wewnętrznie serwer nie wchodzi. Założyłem, że w erze cyfryzacji TV i niedługo radia, HTTP/1.0 nikt nie używa. A tu google.com - czy to poważny błąd brak rozróżnienia na HTTP/1.0 i HTTP/1.1 ?


Pozdrawiam,
Marek Horodyski
Re: Dziwne requesty
#61466
Author: Grzegorz Staniak
Date: Sat, 03 Aug 2013 14:44
54 lines
2905 bytes
On 03.08.2013, marek.horodyski@gmail.com <marek.horodyski@gmail.com> wrote:

> Dobry wieczór :)
> Startuję z serwowaniem www. Na razie nie mam czasu coś więcej stworzyć, 
> ale serwer stoi i takie puste strony może wystawić. Stoi se i "słucha",  
> a tu takie niespodziewane wołania się pojawiają, co do obsługi których 
> mam szereg wątpliwości i w związku z tym pytań :

Chyba powinieneś przeczytać specyfikację HTTP (RFC 2616) zanim
napiszesz ten serwer. I ty będziesz więcej wiedział o tym jak się 
serwer powinien zachowywać, i klienty nie będą zaskakiwane "dziwnymi"
reakcjami serwera.

> GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1

Skanowanie w poszukiwaniu dziur w oprogramowaniu serwera:
http://nfsec.pl/security/199

> GET / HTTP/1.0

HTTP w wersji 1.0 nie wymagał nagłówka "Host". Powinieneś podać 
odpowiedź z domyślnego wirtualnego hosta dla danej instalacji.

> CONNECT tcpconn2.tencent.com:443 HTTP/1.1
> GET http://server5.cyberpods.net/azenv.php HTTP/1.1
> GET http://gameframe.net/headers HTTP/1.1

Ktoś usiłuje użyć cię jako proxy/proxy SSL. Niekoniecznie 
w uczciwych zamiarach.

> GET http://www.google.com/ HTTP/1.0
> Host: www.google.com
> Accept: text/html
> User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
> Proxy-Connection: close
>
> GET http://www.google.pl/search?hl=pl&q=blog HTTP/1.1
> Host: www.google.pl
>
> Czyli coś od googla. 

_Do_ googla. Nagłówek "Host" zawiera nazwę domenową vhosta z którego 
klient chce pobrać dokumenty pod danym adresem IP. Znowu próba użycia
proxy. W pierwszym przypadku masz nawet świadczący o tym nagłówek 
(Proxy-Connection).

Jeśli nie lubisz czytać specyfkacji technicznych, znajdź jakąś
książkę, coś podobnego do: http://www.amazon.com/dp/0471398233 -- 
ale z jakimś opisem HTTP powinieneś się zapoznać, skoro chcesz 
go obsługiwać.

GS
-- 
Grzegorz Staniak <gstaniak _at_ gmail *dot* com>
Re: Dziwne requesty
#61467
Author: marek.horodyski
Date: Sun, 04 Aug 2013 02:37
65 lines
4587 bytes
W dniu sobota, 3 sierpnia 2013 16:44:47 UTC+2 użytkownik Grzegorz Staniak napisał:
> On 03.08.2013, marek.horodyski@gmail.com <marek.horodyski@gmail.com> wrote:
> 
> 
[...] 
> Chyba powinieneś przeczytać specyfikację HTTP (RFC 2616) zanim
> 
> napiszesz ten serwer. I ty będziesz więcej wiedział o tym jak się 
> 
> serwer powinien zachowywać, i klienty nie będą zaskakiwane "dziwnymi"

Witam,
Próbowałem to czytać. W wielu RFC nie wiedzą jak pisać zwięźle. Może jakieś bryki by się przydały? Jestem ładnie 55+ i mam świadomość, że próbując zaczynać od RFC, z czego może 4% było by mi przydatne, nigdy bym nie dotarł do końca. Nie zdążył bym :). I tak mi bardzo wolno idzie. Ale jak na razie działa to co chcę aby działało, hostowanie kilku domen też. Przy czym właśnie z wiersza HOST sprawdzam do jakiej domeny jest odwołanie - stąd to moje zaskoczenie, jak w tym polu "google" się pojawiło. Nie wiem jeszcze jak rozpoznać w tych wywołaniach zapytania indeksujące wyszukiwarek. Tych dziwnych requestów jest dość dużo. Ostatnio najwięcej jest prób wydobycia jakichś plików SETUP o różnych nazwach i próbach umiejscowienia. Np. : 

GET /php-my-admin/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.5.5/index.php HTTP/1.1
GET /mysqladmin/ HTTP/1.1
GET /pma/scripts/setup.php HTTP/1.1
...
Dostają grzecznie w odpowiedzi 404 i już. Jak by lepiej odpowiedzi czytały to by wiedziały, że server nie jest na php i nie ma czego szukać. 

> HTTP w wersji 1.0 nie wymagał nagłówka "Host". Powinieneś podać 
> 
> odpowiedź z domyślnego wirtualnego hosta dla danej instalacji.

Przy CONNECT nie podał HOST. Cały nagłówek to :

CONNECT www.google.com:443 HTTP/1.0

ale przy GET 1.0 jest :

GET http://www.google.com/ HTTP/1.0
Host: www.google.com
Accept: text/html
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Proxy-Connection: close

Czy to był jakiś boot z google ?
Odpowiedź była :

HTTP/1.0 404 Not Found
X-Powered-By: Harbour 3.2.0dev (r1304301343)/MinGW GNU C 4.6.1 (32-bit)
Cache-Control: no-cache
Server: homar.exe
Content-Type: text/html
Connection: Keep-Alive
Keep-Alive: timeout=15
Date: Fri, 02 Aug 2013 23:34:39 GMT
Content-Length: 52

<html><body><h1>404 Not Found<br></h1></body></html>

Gdyby w HOST był sformatowany w IPv4 ( adres serwera) a po GET był by znak "/", w odpowiedzi poszła by lista domyślnych domen. Pisząc "domyślnego wirtualnego hosta dla danej instalacji" miałeś chyba coś takiego na myśli, tylko chodziło zapewne o jedną domenę. Jak w takim przypadku powinien wyglądać komunikat odpowiedzi? Chodzi mi o poprawną obsługę requestu przysłanego w pozytywnych/rozpoznawczych ("pokojowych") zamiarach. To może być jakaś jedna główna domena. O ile komunikację serwera po HTTP z przeglądarką mogę przetestować, to jak po drugiej stronie jest coś innego, mam trochę "związane ręce".

> > GET http://www.google.pl/search?hl=pl&q=blog HTTP/1.1
> > Host: www.google.pl
> > Czyli coś od googla. 
> 
> _Do_ googla. Nagłówek "Host" zawiera nazwę domenową vhosta z którego 

Do googla ? Czy to było z jakiegoś wyszukiwania googlowego ?

Pozdrawiam,
Marek Horodyski
Re: Dziwne requesty
#61468
Author: Grzegorz Staniak
Date: Sun, 04 Aug 2013 17:07
42 lines
2726 bytes
On 04.08.2013, marek.horodyski@gmail.com <marek.horodyski@gmail.com> wrote:

>> Chyba powinieneś przeczytać specyfikację HTTP (RFC 2616) zanim
>> napiszesz ten serwer. I ty będziesz więcej wiedział o tym jak się 
>> serwer powinien zachowywać, i klienty nie będą zaskakiwane "dziwnymi"
>
> Witam,
> Próbowałem to czytać. W wielu RFC nie wiedzą jak pisać zwięźle. 

E tam. Całość specyfikacji protokołu na ~100 stronach to wcale nie
jest dużo. To nie jest gęsta proza, tylko techniczny opis. Bez tego,
niestety, będziesz obsługiwał HTTP na oślep, wedle znanej metody
profesora Macajewa. Ani tobie, ani klientom korzystającym z twojego
serwera nie wyjdzie to na dobre.

> GET /php-my-admin/scripts/setup.php HTTP/1.1
> GET /phpMyAdmin-2/scripts/setup.php HTTP/1.1
> GET /phpMyAdmin-2.5.5/index.php HTTP/1.1
> GET /mysqladmin/ HTTP/1.1
> GET /pma/scripts/setup.php HTTP/1.1

Macają w poszukiwaniu dziur. Szukanie nie zabezpieczonych po instalacji 
phpmysqladmina plików "setup.php", albo w ogóle instalacji, na której
można by testować exploity.

[...]
>> > GET http://www.google.pl/search?hl=pl&q=blog HTTP/1.1
>> > Host: www.google.pl
>> > Czyli coś od googla. 
>> 
>> _Do_ googla. Nagłówek "Host" zawiera nazwę domenową vhosta z którego 
>
> Do googla ? Czy to było z jakiegoś wyszukiwania googlowego ?

_DO_ googla. Za pośrednictwem twojego serwera. Ot, taki test czy
przypadkiem nie trafi się źle skonfigurowane proxy. Wyszukiwanie 
guglowe to byłoby zapytanie robota google o dokumenty z twojego serwisu,
a nie próba pobrania strony głównej Google Search, prawda?

GS
-- 
Grzegorz Staniak <gstaniak _at_ gmail *dot* com>
Re: Dziwne requesty
#61469
Author: marek.horodyski
Date: Mon, 05 Aug 2013 00:40
27 lines
3656 bytes
W dniu niedziela, 4 sierpnia 2013 19:07:38 UTC+2 użytkownik Grzegorz Staniak napisał:
[...]
> E tam. Całość specyfikacji protokołu na ~100 stronach to wcale nie
> jest dużo. To nie jest gęsta proza, tylko techniczny opis. Bez tego,
> niestety, będziesz obsługiwał HTTP na oślep, wedle znanej metody
> profesora Macajewa. Ani tobie, ani klientom korzystającym z twojego
> serwera nie wyjdzie to na dobre.

Z powietrza pomysłu nie wziąłem. Wykorzystuję podstawy działającego serwera napisanego przez Mindaugasa Kavaliauskasa ( dbtopas at dbtopas dot lt). On się jakoś przez RFC przebił. Widać młody i zdolny. Działający, wielowątkowy serwer z obsługą domen w Harbour ma teraz 560 linni, 26 kb. Przeliczając 3,5 kilo na stronę, wyjdzie 7,5 strony. Jak to się ma do 132 "prozy" ? Zaczynając przeglądałem wiele różnych materiałów, też RFC. Chyba 132 strony i niestety nie mogłem tam znaleźć odpowiedzi na moje pytania/wątpliwości, i bez irytacji, więcej korzyści miałem z testów i przeglądania innych kodów niż RFC (czyli na macajewa :). Co prawda serwer obsługuje tylko GET i POST oraz będę chciał dopisać jeszcze PUT. Nie obsługuje HTTPS, i nie wiem czy będzie. To raczej poza moimi potrzebami.

> Macają w poszukiwaniu dziur. Szukanie nie zabezpieczonych po instalacji 
> phpmysqladmina plików "setup.php", albo w ogóle instalacji, na której
> można by testować exploity.

Dopóki php w wywołaniach, dopóty mogę spać spokojnie :)

> _DO_ googla. Za pośrednictwem twojego serwera. Ot, taki test czy
> przypadkiem nie trafi się źle skonfigurowane proxy. Wyszukiwanie 
> guglowe to byłoby zapytanie robota google o dokumenty z twojego serwisu,
> a nie próba pobrania strony głównej Google Search, prawda?

Proxy to już większa rzecz, a tu cienki serwerek na cienkim łączu. Nie znajdą czegoś, czego nie ma. W sumie przyglądam się tym wywołaniom, i widzę, że tak wygląda real. Trzeba się przyzwyczaić a nie dziwić :)

No nic, czytam teraz o SMTP, POP3, IMAPach itp. Różnych książek, eBooków na różne tematy pozaczynane, a tu kolejny pomysły nękają. Im więcej czytam, tym więcej ustawia się w kolejce do przeczytania ...

Pozdrawiam,
Marek Horodyski
Re: Dziwne requesty
#61470
Author: marek.horodyski
Date: Mon, 05 Aug 2013 23:24
65 lines
3865 bytes
W dniu niedziela, 4 sierpnia 2013 19:07:38 UTC+2 użytkownik Grzegorz Staniak napisał:
[...]
Witam ponownie.
Próbuję wykorzystać RFC. Miałem żądanie :
HEAD / HTTP/1.0

z adresu 194.87.34.22. Odpowiedziałem :
HTTP/1.0 501 Not Implemented
X-Powered-By: Harbour 3.2.0dev (r1304301343)/MinGW GNU C 4.6.1 (32-bit)
Cache-Control: no-cache
Server: homar.exe
Content-Type: text/html
Connection: Close
Keep-Alive: timeout=15
Date: Mon, 05 Aug 2013 08:54:25 GMT
Content-Length: 58

<html><body><h1>501 Not Implemented<br></h1></body></html>

Wg RFC powiniem odpowiedzieć :
HEAD

   The HEAD method is identical to GET except that the server MUST NOT
   return a message-body in the response. The metainformation contained
   in the HTTP headers in response to a HEAD request SHOULD be identical
   to the information sent in response to a GET request. This method can
   be used for obtaining metainformation about the entity implied by the
   request without transferring the entity-body itself. This method is
   often used for testing hypertext links for validity, accessibility,
   and recent modification.

   The response to a HEAD request MAY be cacheable in the sense that the
   information contained in the response MAY be used to update a
   previously cached entity from that resource. If the new field values
   indicate that the cached entity differs from the current entity (as
   would be indicated by a change in Content-Length, Content-MD5, ETag
   or Last-Modified), then the cache MUST treat the cache entry as
   stale.

Problem w tym, że RFC nie podaje przykładowego żądania i poprawnej nań odpowiedzi, czego mi najbardziej brakuje. Wygląda, że odpowiedź powinna wyglądać :

HTTP/1.0 200 OK
X-Powered-By: Harbour 3.2.0dev (r1304301343)/MinGW GNU C 4.6.1 (32-bit)
Cache-Control: no-cache
Server: homar.exe
Content-Type: text/html
Connection: Close
Keep-Alive: timeout=15
Date: Mon, 05 Aug 2013 08:54:25 GMT
Content-Length: 0

albo przynajmniej tak mi się wydaje. Wobec tego dopisałem w kodzie metodę :

     switch server[ as_http[ 10]]
     case "HEAD"
       exit // powinno pójść domyślne 200 w odpowiedzi i pusta strona - do TESTU!
     case "GET"
     case "POST"

I teraz ważne pytanie : JAK TO PRZETESTOWAĆ ?
Jak ze strony klienta wygenerować takie żądanie, abym mógł sprawdzić co serwer zrobi ?


Pozdrawiam,
Marek Horodyski
Re: Dziwne requesty
#61471
Author: Grzegorz Staniak
Date: Tue, 06 Aug 2013 01:54
83 lines
4042 bytes
On 05.08.2013, marek.horodyski@gmail.com <marek.horodyski@gmail.com> wrote:

> Wg RFC powiniem odpowiedzieć :
> HEAD
>
>    The HEAD method is identical to GET except that the server MUST NOT
>    return a message-body in the response. The metainformation contained
>    in the HTTP headers in response to a HEAD request SHOULD be identical
>    to the information sent in response to a GET request. This method can
>    be used for obtaining metainformation about the entity implied by the
>    request without transferring the entity-body itself. This method is
>    often used for testing hypertext links for validity, accessibility,
>    and recent modification.
>
>    The response to a HEAD request MAY be cacheable in the sense that the
>    information contained in the response MAY be used to update a
>    previously cached entity from that resource. If the new field values
>    indicate that the cached entity differs from the current entity (as
>    would be indicated by a change in Content-Length, Content-MD5, ETag
>    or Last-Modified), then the cache MUST treat the cache entry as
>    stale.
>
> Problem w tym, że RFC nie podaje przykładowego żądania i poprawnej nań 
> odpowiedzi, czego mi najbardziej brakuje. 

Przecież będą dokładnie takie same jak dla GET, tylko bez wysyłania 
treści zasobu.

> Wygląda, że odpowiedź powinna wyglądać :
>
> HTTP/1.0 200 OK
> X-Powered-By: Harbour 3.2.0dev (r1304301343)/MinGW GNU C 4.6.1 (32-bit)
> Cache-Control: no-cache
> Server: homar.exe
> Content-Type: text/html
> Connection: Close
> Keep-Alive: timeout=15
> Date: Mon, 05 Aug 2013 08:54:25 GMT
> Content-Length: 0

Content-length albo podajesz takie "jakie by było" gdybyś wysyłał treść, 
albo omijasz (np. dla zasobów generowanych dynamicznie, dla których
nie może być z góry znane). Czyli nie "0".

> albo przynajmniej tak mi się wydaje. Wobec tego dopisałem w kodzie metodę :
>
>      switch server[ as_http[ 10]]
>      case "HEAD"
>        exit // powinno pójść domyślne 200 w odpowiedzi i pusta strona - do TESTU!
>      case "GET"
>      case "POST"
>
> I teraz ważne pytanie : JAK TO PRZETESTOWAĆ ?
> Jak ze strony klienta wygenerować takie żądanie, abym mógł sprawdzić 
> co serwer zrobi ?

A choćby i ręcznie:

[~]$ telnet www.onet.pl 80
Trying 213.180.141.140...
Connected to www.onet.pl.
Escape character is '^]'.
HEAD / HTTP/1.1
Host: www.onet.pl
Connection: close

HTTP/1.1 200 OK
server: edgeserver
content-length: 117325
content-type: text/html; charset=utf-8
cache-control: private
pragma: no-cache
Connection: close

Connection closed by foreign host.

Albo poszukaj sobie jakiegoś narzędzia, np. czegoś stąd:

http://stackoverflow.com/questions/1976442/how-do-i-send-a-head-request-manually-using-firefox

GS
-- 
Grzegorz Staniak <gstaniak _at_ gmail *dot* com>
Re: Dziwne requesty
#61472
Author: marek.horodyski
Date: Wed, 07 Aug 2013 00:02
28 lines
2561 bytes
W dniu wtorek, 6 sierpnia 2013 03:54:35 UTC+2 użytkownik Grzegorz Staniak napisał:

[...]

> Content-length albo podajesz takie "jakie by było" gdybyś wysyłał treść, 
> 
> albo omijasz (np. dla zasobów generowanych dynamicznie, dla których
> 
> nie może być z góry znane). Czyli nie "0".


Ok. Z opisu RFC takich rzeczy właśnie się nie mogę dowiedzieć.

> A choćby i ręcznie:
> 
> 
> 
> [~]$ telnet www.onet.pl 80

No właśnie, przeskanowałem dysk i mam tylko :

c:\Windows\winsxs\amd64_microsoft-windows-telnet-client_31bf3856ad364e35_6.1.7600.16385_none_1426830c3ebb712d\telnet.exe

To chyba nie do użycia. A kompa z Mintem akurat znajomy pożyczył na kilka dni. 
Wrócę do tych testów i wątku za jakieś 1,5 - 2 tygodnie.

Pozdrawiam,
Marek Horodyski
Re: Dziwne requesty
#61473
Author: Grzegorz Staniak
Date: Wed, 07 Aug 2013 08:03
50 lines
2916 bytes
On 07.08.2013, marek.horodyski@gmail.com <marek.horodyski@gmail.com> wrote:

> [...]
>
>> Content-length albo podajesz takie "jakie by było" gdybyś wysyłał treść, 
>> albo omijasz (np. dla zasobów generowanych dynamicznie, dla których
>> nie może być z góry znane). Czyli nie "0".
>
> Ok. Z opisu RFC takich rzeczy właśnie się nie mogę dowiedzieć.

Taaa ;)

14.13 Content-Length

   The Content-Length entity-header field indicates the size of the
   entity-body, in decimal number of OCTETs, sent to the recipient or,
   in the case of the HEAD method, the size of the entity-body that
   would have been sent had the request been a GET.

       Content-Length    = "Content-Length" ":" 1*DIGIT

   An example is

       Content-Length: 3495

    Applications SHOULD use this field to indicate the transfer-length
    of the message-body, unless this is prohibited by the rules in
    section 4.4.
[...]

4.4 Message Length

    The transfer-length of a message is the length of the
    message-body as it appears in the message; that is, after any 
    transfer-codings have been applied. When a message-body is included 
    with a message, the transfer-length of that body is determined by one 
    of the following (in order of precedence):
[...]

> c:\Windows\winsxs\amd64_microsoft-windows-telnet-client_31bf3856ad364e35_6.1.7600.16385_none_1426830c3ebb712d\telnet.exe
>
> To chyba nie do użycia. 

Można ściągnąć choćby i puTTY, telnet też obsłuży. Poza tym,
windowsowy telnet też powinien rozpoznać argument w postaci numeru
portu. No i zawsze są np. dodatki do Firefoksa. 

GS
-- 
Grzegorz Staniak <gstaniak _at_ gmail *dot* com>
Re: Dziwne requesty
#61481
Author: dot
Date: Fri, 09 Aug 2013 18:25
13 lines
1817 bytes
marek.horodyski@gmail.com pisze:
> W dniu niedziela, 4 sierpnia 2013 19:07:38 UTC+2 użytkownik Grzegorz Staniak napisał:
> [...]
> I teraz ważne pytanie : JAK TO PRZETESTOWAĆ ?
> Jak ze strony klienta wygenerować takie żądanie, abym mógł sprawdzić co serwer zrobi ?
stosownymi narzędziami rozumiejącymi HTTP:
wget --header="..." ... http[s]://example.org/path/to/file?...
curl --header="..." ... http[s]://example.org/path/to/file?...
(za pomocą curla zrobisz nawet PUT, DELETE, być może nawet OPTIONS?)
ewentualnie bardziej hard (bez zbędnego kodowania w C) perl IO::Socket
IO::Socket::INET->new() i w dosyć łatwy, prosty i zautomatyzowany sposób
wyślesz dowolnie spreparowanego / wygenerowanego requesta
niezbędnego do testów danej funkcjonalności ...
Re: Dziwne requesty
#61474
Author: Marek
Date: Sat, 10 Aug 2013 14:26
28 lines
2345 bytes
W dniu 2013-08-07 10:03, Grzegorz Staniak pisze:

>>> Content-length albo podajesz takie "jakie by było" gdybyś wysyłał treść,
>>> albo omijasz (np. dla zasobów generowanych dynamicznie, dla których
>>> nie może być z góry znane). Czyli nie "0".
>>
>> Ok. Z opisu RFC takich rzeczy właśnie się nie mogę dowiedzieć.
>
> Taaa ;)
>
> 14.13 Content-Length (...)
 >

 >      Applications SHOULD use this field to indicate the transfer-length
 >      of the message-body, unless this is prohibited by the rules in
 >      section 4.4.

Szczerze mówiąc ja też nie widzę w cytowanym przez Ciebie fragmencie, że 
nagłówek można pominąć dla dynamicznych treści. Tu napisano, że 
aplikacja powinna używać tego nagłówka z wyjątkiem sytuacji gdy jest to 
niedozwolone (o czym sekcja 4.4 informuje). Moim zdaniem "powinna" = 
"musi" moim zdaniem, a użyto "powinna" bo nikt za brak tego nagłówka 
głowy nie obetnie. Najwyżej wiadomość np. nie zostanie odebrana 
poprawnie. Skąd wniosek, że można zignorować wysyłanie nagłówka?

-- 
Pozdrawiam
Marek
Re: Dziwne requesty
#61475
Author: Grzegorz Staniak
Date: Sat, 10 Aug 2013 15:00
34 lines
2560 bytes
On 10.08.2013, Marek <precz@spamowi.com> wrote:

>>>> Content-length albo podajesz takie "jakie by było" gdybyś wysyłał treść,
>>>> albo omijasz (np. dla zasobów generowanych dynamicznie, dla których
>>>> nie może być z góry znane). Czyli nie "0".
>>>
>>> Ok. Z opisu RFC takich rzeczy właśnie się nie mogę dowiedzieć.
>>
>> Taaa ;)
>>
>> 14.13 Content-Length (...)
> >
>
> >      Applications SHOULD use this field to indicate the transfer-length
> >      of the message-body, unless this is prohibited by the rules in
> >      section 4.4.
>
> Szczerze mówiąc ja też nie widzę w cytowanym przez Ciebie fragmencie, że 
> nagłówek można pominąć dla dynamicznych treści.

Nie chciałem spamować cytując całe strony. Jest trochę dalej w 14.13:

    In HTTP, it SHOULD be sent whenever the message's length can be 
    determined prior to being transferred, unless this is prohibited 
    by the rules in section 4.4.

Innymi słowy, należy stosować reguły z 4.4 i wysyłać "Content-length" 
zawsze, kiedy da się tę długość ustalić. A przypadki kiedy nie można 
jest z wyprzedzeniem ustalić to właśnie najczęściej treść generowana
dynamicznie.

GS
-- 
Grzegorz Staniak <gstaniak _at_ gmail *dot* com>
Re: Dziwne requesty
#61478
Author: Sylwester Zarębski
Date: Sat, 10 Aug 2013 15:20
23 lines
2175 bytes
Dnia Sat, 10 Aug 2013 16:26:59 +0200, Marek napisał(a):

> W dniu 2013-08-07 10:03, Grzegorz Staniak pisze:
>  >      Applications SHOULD use this field to indicate the transfer-length
>  >      of the message-body, unless this is prohibited by the rules in
>  >      section 4.4.
> Moim zdaniem "powinna" = "musi" moim zdaniem, a użyto "powinna"
> bo nikt za brak tego nagłówka głowy nie obetnie.

Nie, nie. "SHOULD" = "powinna" oznacza dokładnie tyle, czyli dobrze by
było, ale niekoniecznie.
"MUST" = "musi być" oznacza też dokładnie tyle, czyli nagłówek jest
wymagany, w przeciwnym razie łamie RFC (co oznacza, że zgodne z RFC
aplikacje nie będą działać poprawnie ze stroną łamiącą RFC).

Nie przeglądałem tego konkretnie RFC, ale w wielu jest wyjaśnienie co
dokładnie oznacza SHOULD, MUST, MUST NOT, etc.

-- 
pozdrawiam
Sylwester Zarębski

Aby wysłać email zmień zbieracz w adresie na sylwek
Re: Dziwne requesty
#61479
Author: Grzegorz Staniak
Date: Sat, 10 Aug 2013 16:10
24 lines
2295 bytes
On 10.08.2013, Sylwester Zarębski <zbieracz@isp.net.pl> wrote:

>>  >      Applications SHOULD use this field to indicate the transfer-length
>>  >      of the message-body, unless this is prohibited by the rules in
>>  >      section 4.4.
>> Moim zdaniem "powinna" = "musi" moim zdaniem, a użyto "powinna"
>> bo nikt za brak tego nagłówka głowy nie obetnie.
>
> Nie, nie. "SHOULD" = "powinna" oznacza dokładnie tyle, czyli dobrze by
> było, ale niekoniecznie.
> "MUST" = "musi być" oznacza też dokładnie tyle, czyli nagłówek jest
> wymagany, w przeciwnym razie łamie RFC (co oznacza, że zgodne z RFC
> aplikacje nie będą działać poprawnie ze stroną łamiącą RFC).
>
> Nie przeglądałem tego konkretnie RFC, ale w wielu jest wyjaśnienie co
> dokładnie oznacza SHOULD, MUST, MUST NOT, etc.

Jest już na ten temat oddzielne RFC :)

http://www.ietf.org/rfc/rfc2119.txt

GS
-- 
Grzegorz Staniak <gstaniak _at_ gmail *dot* com>
Re: Dziwne requesty
#61476
Author: Marek
Date: Tue, 13 Aug 2013 20:40
35 lines
2732 bytes
W dniu 2013-08-10 17:00, Grzegorz Staniak pisze:
>
> Nie chciałem spamować cytując całe strony. Jest trochę dalej w 14.13:

To nie jest żadne spamowanie :-)

Znalazłem fragment w 14.13, który to faktycznie opisuje. To co cytujesz 
poniżej oznacza zupełnie coś innego - stąd moje niezrozumienie. Tak czy 
owak nie dziw się mojemu imiennikowi, że nie wyczytał interpretacji 
nagłówka z RFC bo jest to tak zredagowane, że trzeba mocno się skupiać 
aby doczytać w czym rzecz.

>      In HTTP, it SHOULD be sent whenever the message's length can be
>      determined prior to being transferred, unless this is prohibited
>      by the rules in section 4.4.
>
> Innymi słowy, należy stosować reguły z 4.4 i wysyłać "Content-length"
> zawsze, kiedy da się tę długość ustalić. A przypadki kiedy nie można
> jest z wyprzedzeniem ustalić to właśnie najczęściej treść generowana
> dynamicznie.

No właśnie tak nie można tego przetłumaczyć :-)

"...unless this is prohibited by the rules in section 4.4"

oznacza - ...z wyjątkiem sytuacji kiedy dołączanie nagłówka 
content-length jest niedozwolone w przypadkach opisanych w sekcji 4.4 
(czyli tam, gdzie body wiadomości nie występuje).

Przy okazji ta sekcja wyjaśnia jak policzyć rozmiar body gdy w/w 
nagłówek nie został podany - ale to już inna para kaloszy.

-- 
Pozdrawiam
Marek
Re: Dziwne requesty
#61477
Author: Grzegorz Staniak
Date: Sat, 17 Aug 2013 00:27
31 lines
2750 bytes
On 13.08.2013, Marek <precz@spamowi.com> wrote:

>>      In HTTP, it SHOULD be sent whenever the message's length can be
>>      determined prior to being transferred, unless this is prohibited
>>      by the rules in section 4.4.
>>
>> Innymi słowy, należy stosować reguły z 4.4 i wysyłać "Content-length"
>> zawsze, kiedy da się tę długość ustalić. A przypadki kiedy nie można
>> jest z wyprzedzeniem ustalić to właśnie najczęściej treść generowana
>> dynamicznie.
>
> No właśnie tak nie można tego przetłumaczyć :-)
>
> "...unless this is prohibited by the rules in section 4.4"
>
> oznacza - ...z wyjątkiem sytuacji kiedy dołączanie nagłówka 
> content-length jest niedozwolone w przypadkach opisanych w sekcji 4.4 
> (czyli tam, gdzie body wiadomości nie występuje).

To nie było tłumaczenie, tylko skrót: a) stosować 4.4, b) a poza
tym, wysyłać nagłówek wtedy kiedy da się ustalić długość treści 
dokumentu. To nadal daje opis poprawnego stosowania tego nagłówka. 

Język RFC można krytykować, ale jednak da się z nich wyczytać 
w sumie wszystko, co trzeba wiedzieć, żeby poprawnie stosować HTTP.
I to jest instancja, litera RFC zawsze ma pierwszeństwo przed 
domysłami i na nich opartymi interpretacjami.

GS
-- 
Grzegorz Staniak <gstaniak _at_ gmail *dot* com>
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads