2012-04-29 12 views
16

Czy nagłówek żądania został dodany lub zmodyfikowany do żądania HTTP przed przekazaniem do serwera przez serwer proxy?Czy serwery proxy HTTP modyfikują pakiety żądań?

Jeśli tak, są wprowadzanych zmian do tych samych pakietów lub zawartość są wykorzystywane do tworzenia nowych pakietów prośbę wraz ze zmianami?

Odpowiedz

25

Istnieje kilka różnych typów serwerów proxy. Ponieważ wspomniałeś o nagłówkach żądań, zakładam, że mówisz o serwerach proxy HTTP, które przesyłają żądania HTTP, a nie pakiety.

UWAGA: W szczególnym przypadku HTTPS requests (TLS/SSL poprzez CONNECT), serwery proxy będzie tylko naprzód zawartość pakietów TCP (i nie są w stanie kontrolować pakiety chyba działając jako man-in-the-middle pełnomocnika) .


Oczywiście to zależy od oprogramowania pośredniczącego i jej konfiguracji, ale HTTP proxy są spodziewać śledzić W3C Guidelines for Web Content Transformation Proxies, w którym stwierdza się wiele rzeczy, ale najbardziej relevantly:

  • Inne niż przeliczanie między serwerami proxy HEAD i GET nie może zmieniać metod żądań.

  • Jeżeli wniosek zawiera dyrektywę Cache-Control: no-transform, serwery proxy nie musi zmieniać żądania inne niż zgodne z przezroczystego zachowania HTTP zdefiniowany w dokumencie RFC 2616 sekcja sekcje HTTP 14.9.5 i 13.5.2 i sekcji, aby dodać pola nagłówka, jak opisano w 4.1.6 Additional HTTP Header Fields.

  • Poza modyfikacjami wymaganymi przez RFC 2616 proxy HTTP nie powinny zmieniać wartości pól nagłówka innych niż polach nagłówka User-Agent, Accept, Accept-Charset, Accept-Encoding i Accept-Language i nie musi usuwać pola nagłówka.

  • Serwery proxy powinny dodać adres IP inicjatora żądania na końcu listy rozdzielanej przecinkami w polu nagłówka HTTP X-Forwarded-For.

  • Serwery proxy muszą (zgodnie z RFC 2616) zawierać pole nagłówka HTTP Via.


Podsumowując, można ogólnie oczekiwać te nagłówki HTTP zostać zmienione/dodane przez zgodnym ze standardami Proxy:

  • User-Agent
  • Accept
  • Accept-Charset
  • Accept-Encoding
  • Accept-Language
  • X-Forwarded-For
  • Via
+0

nie dostanę część "przekazywać wnioski nie pakietów". Czy masz na myśli to, że zrekonstruuje on żądanie http z przychodzących pakietów, a następnie je zmodyfikuje? – Ashwin

+0

@Ashwin: Myślę, że nie rozumiesz tutaj protokołu HTTP. HTTP to protokół aplikacji, który znajduje się w warstwie _application_ [modelu OSI] (http://en.wikipedia.org/wiki/OSI_model). Wszystkie "pakiety" HTTP są naprawdę pakietami TCP, a HTTP nie zajmuje się bezpośrednio pakietami (wszystko to dzieje się na warstwach _transport_ i _network_ modelu [OSI] (http://en.wikipedia.org/wiki/OSI_model)). – Xenon

+0

, gdy zgłoszę żądanie w sekcji Bowser, takie jak "www.google.com", to żądanie przechodzi z poziomu aplikacji (przeglądarki) do poziomu fizycznego (który jest kartą NIC). Teraz serwer proxy pobiera go, a następnie dekoduje dane poziomu fizycznego do warstwy 2 i tak dalej ... do transportu (warstwa 4). tutaj modyfikuje dane, a następnie przekazuje je w prawo? – Ashwin