2012-04-29 27 views
16

Có bất kỳ tiêu đề yêu cầu nào được thêm hoặc sửa đổi cho yêu cầu HTTP trước khi chuyển tiếp đến máy chủ bằng máy chủ proxy không?Máy chủ proxy HTTP có sửa đổi các gói yêu cầu không?

Nếu có, các thay đổi được thực hiện cho cùng một gói hay là nội dung được sử dụng để tạo các gói yêu cầu mới với các sửa đổi?

Trả lời

25

Có một vài loại máy chủ proxy khác nhau. Bởi vì bạn đã đề cập đến các tiêu đề yêu cầu, tôi sẽ giả định rằng bạn đang nói về các máy chủ proxy HTTP, chuyển tiếp các yêu cầu HTTP, chứ không phải các gói tin.

LƯU Ý: Trong trường hợp đặc biệt của HTTPS requests (TLS/SSL qua CONNECT), máy chủ proxy sẽ chỉ về phía trước nội dung của các gói tin TCP (và không thể kiểm tra các gói dữ liệu trừ khi hoạt động như một proxy man-in-the-middle) .


Tất nhiên nó phụ thuộc vào phần mềm proxy và cấu hình của nó, nhưng HTTP proxy được dự kiến ​​ theo W3C Guidelines for Web Content Transformation Proxies, trong đó nêu nhiều thứ, nhưng relevantly nhất:

  • Ngoài việc chuyển đổi giữa các proxy HEADGET không được thay đổi phương thức yêu cầu.

  • Nếu yêu cầu chứa chỉ thị Cache-Control: no-transform, proxy không được thay đổi yêu cầu khác ngoài hành vi HTTP trong suốt được xác định trong phần RFC 2616 phần 14.9.5 và phần 13.5.2 và thêm trường tiêu đề như được mô tả trong 4.1.6 Additional HTTP Header Fields.

  • Khác với những sửa đổi theo yêu cầu của RFC 2616 proxy HTTP không nên thay đổi các giá trị của lĩnh vực tiêu đề khác hơn so với các lĩnh vực tiêu đề User-Agent, Accept, Accept-Charset, Accept-Encoding, và Accept-Language và không phải xóa các lĩnh vực tiêu đề.

  • Proxy nên thêm địa chỉ IP của người khởi tạo yêu cầu vào cuối danh sách được phân tách bằng dấu phẩy trong trường tiêu đề HTTP X-Forwarded-For.

  • Proxy phải (theo RFC 2616) bao gồm trường tiêu đề HTTP Via.


Nói tóm lại, bạn thường có thể mong đợi những tiêu đề HTTP phải được thay đổi/bổ sung bởi một proxy tiêu chuẩn tương thích:

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

Tôi không nhận được phần "yêu cầu phía trước không gói". Bạn có nghĩa là nó sẽ tái tạo lại yêu cầu http từ các gói dữ liệu đến và sau đó sửa đổi chúng? – Ashwin

+0

@Ashwin: Tôi nghĩ bạn hiểu nhầm giao thức HTTP ở đây. HTTP là giao thức ứng dụng, nằm trong lớp _application_ của [mô hình OSI] (http://en.wikipedia.org/wiki/OSI_model). Tất cả các gói HTTP đều thực sự là các gói TCP và HTTP không xử lý trực tiếp các gói (tất cả điều này xảy ra trên các lớp _transport_ và _network_ của [mô hình OSI] (http://en.wikipedia.org/wiki/OSI_model)). – Xenon

+0

khi tôi thực hiện yêu cầu trong trình cung cấp dịch vụ như "www.google.com", yêu cầu này chuyển từ cấp ứng dụng (trình duyệt) đến mức vật lý (là NIC). Bây giờ máy chủ proxy lấy nó và sau đó giải mã dữ liệu mức vật lý thành lớp 2 và cứ thế ... để vận chuyển (lớp 4). ở đây nó sửa đổi dữ liệu và sau đó chuyển tiếp nó phải không? – Ashwin

Các vấn đề liên quan