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 độngCách xử lý cần thiết
Liên kết và hình ảnhPhâ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 CSSDùng cơ sở từ xa của bảng kiểu
Biểu mẫuGiữ nguyên phương thức và dữ liệu đã gửi
Chuyển hướngGiữ điều hướng trong mô hình được phép
Yêu cầu do script tạoXử 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.

Bài viết liên quan