Điều hướng proxy web PHP: URL tương đối, cookie và origin
Lập kế hoạch cho URL tài nguyên, điều hướng, cookie và ranh giới origin khi biến việc tải bằng PHP thành proxy web cho trình duyệt.
Trước khi thêm nhiều bản viết lại hơn vào bộ tải PHP, hãy chọn nơi tài nguyên kế tiếp sẽ đi. Một tài liệu được tải từ https://destination.example/catalog/ và trả về tại https://viewer.example/browse?url=... có thể chứa:
<img src="photo.jpg">
<a href="details/42">Details</a>Trình duyệt phân giải các tham chiếu đó bằng tài liệu nó nhận được ở trình xem. Việc PHP đã tải các byte gốc không thiết lập cơ sở từ xa.
Phần tử base có thể trỏ các URL tương đối tới đích, nhưng những yêu cầu đó sau đó có thể đi thẳng từ trình duyệt tới đích. Để giữ mọi yêu cầu đi qua PHP, thay vào đó cần URL proxy và mô hình định tuyến rộng hơn:
| Tài nguyên hoặc hành động | Cách xử lý cần thiết |
|---|---|
| Liên kết và hình ảnh | Phân giải theo tài liệu từ xa và tạo ra tuyến mong muốn |
| Import và tài nguyên CSS | Dùng cơ sở từ xa của bảng kiểu |
| Biểu mẫu | Giữ nguyên phương thức và dữ liệu đã gửi |
| Chuyển hướng | Giữ điều hướng trong mô hình được phép |
| Yêu cầu do script tạo | Xử lý các URL không có trong HTML gốc |
Một vài phép thay thế bằng biểu thức chính quy không thể bảo đảm tương thích chung với các trang nhiều script. Với một tài liệu công khai đã biết, có thể chỉ cần tắt điều hướng, cho phép liên kết trực tiếp hoặc định tuyến một tập con được hỗ trợ qua trình xem. Hãy giữ đúng loại phương tiện thay vì coi mọi phản hồi là HTML.
Việc trả về đánh dấu không đáng tin từ tên miền của bạn cũng khiến nó mang origin trình duyệt của trình xem, chứ không phải danh tính của trang đã tải. Hãy tách các tài liệu đó khỏi trang tài khoản và quản trị. Định nghĩa cookie từ xa cho từng khách, các header được phép chuyển tiếp và đích chuyển hướng; một hũ cookie dùng chung có thể trộn lẫn đăng nhập từ xa.
Hãy cam kết với ranh giới hỗ trợ đó trước khi cung cấp một phiên duyệt. Với việc duyệt thông thường qua một lối ra khác, giao diện proxy sẵn có của trình duyệt, như cài đặt HTTP/SOCKS của Firefox, giữ nguyên URL đích và mô hình origin của trình duyệt mà không cần lớp tải-và-xuất-bản lại này. Để thử riêng một trang công khai, danh sách proxy miễn phí cung cấp các điểm cuối ứng viên; hãy khớp giao thức trong cài đặt trình duyệt.