Đối với một handle libcurl hiện có, hãy tách rõ ràng danh sách tiêu đề đích và proxy:

curl_easy_setopt(handle, CURLOPT_HEADEROPT, (long)CURLHEADER_SEPARATE);
curl_easy_setopt(handle, CURLOPT_PROXYHEADER, proxy_headers);
curl_easy_setopt(handle, CURLOPT_HTTPHEADER, origin_headers);

Giữ handle đã cấu hình và các danh sách hợp lệ còn sống trong suốt quá trình truyền. CURLHEADER_SEPARATE phân biệt các tiêu đề được dùng trên CONNECT với các tiêu đề được dùng cho yêu cầu đích. Các ví dụ chính sách thống nhất cũ có thể đặt danh sách thông thường trong cả hai lần trao đổi.

Đường dẫn yêu cầuÝ nghĩa của các danh sách riêng biệt
HTTPS bên trong một đường hầm CONNECT thông thườngTrao đổi với proxy diễn ra trước; sau đó các tiêu đề HTTP đích theo sau bên trong TLS đích.
Chuyển tiếp HTTP thông thườngProxy có thể đọc tiêu đề đích, và libcurl có thể dùng cả hai danh sách áp dụng trên một yêu cầu được chuyển tiếp.

Một dấu định tuyến chỉ dành cho proxy thuộc về trao đổi với proxy. Khi chuyển tiếp bằng văn bản thuần, một trường tùy chỉnh tùy ý có thể đến được nguồn gốc trừ khi cách bố trí chuyển tiếp xử lý nó; tên của tùy chọn không phải là bảo đảm bảo mật.

Dùng các tùy chọn thông tin xác thực được hỗ trợ để xác thực. Với siêu dữ liệu do người vận hành định nghĩa, hãy xác định chặng nào tiêu thụ nó và liệu nó có thể được chuyển tiếp thay vì đặt mật khẩu vào một trường chung.

Khi một dấu bị thiếu hoặc có vẻ bị rò rỉ, hãy xác định yêu cầu thực tế chứa nó. Một callback tiêu đề hiển thị vài lần trao đổi có thể khiến các danh sách được tách đúng trông như bị trộn lẫn.

Bài viết liên quan