VPN không thể tắt CORS, nó thay đổi phản hồi
Một địa chỉ ra mới không làm hai nguồn gốc giống nhau. Ghi lại các tiêu đề phản hồi trên cả hai đường và so sánh trước khi đổ lỗi cho việc thực thi CORS.
Hãy bắt đầu bằng việc tách hai thứ đã thay đổi cùng lúc: đường mạng và việc trình duyệt thực thi. VPN thay đổi địa chỉ ra; nó không thay đổi nguồn gốc của trang, vốn được tạo từ lược đồ, máy chủ và cổng. Nếu yêu cầu giờ thành công, có gì đó trong phản hồi đã thay đổi, hoặc chính yêu cầu đã thay đổi. Xác định cái nào là toàn bộ cuộc điều tra.
CORS là một giao thức tiêu đề do trình duyệt thực thi, nên không gì trên đường mạng có thể tắt nó.
Nguồn gốc không phải địa chỉ IP
Nguồn gốc là lược đồ, máy chủ và cổng. Đó không phải địa chỉ mà các gói tin đi ra, và cũng không phải IP mà máy chủ nhìn thấy. Đó là lý do VPN có thể thay đổi mọi địa chỉ quan sát được mà vẫn giữ nguyên nguồn gốc. Trình duyệt so sánh Access-Control-Allow-Origin của phản hồi với nguồn gốc của trang, và địa chỉ ra không bao giờ đi vào phép so sánh đó.
Vì vậy một tiện ích hoặc proxy có vẻ sửa lỗi CORS đang làm việc khác: viết lại tiêu đề, hoặc định tuyến yêu cầu để nó không còn khác nguồn gốc nữa. Không cái nào là thuộc tính của VPN.
Trình duyệt thực sự gửi gì
Với một yêu cầu khác nguồn gốc không đơn giản, trình duyệt gửi trước một bước kiểm tra sơ bộ OPTIONS, mang theo phương thức và tiêu đề dự định. Máy chủ phải trả lời bằng các quyền mà nó cho phép, và yêu cầu thật chỉ tiếp tục nếu câu trả lời đó đáp ứng các quy tắc. VPN thay đổi đường mang cả hai lần trao đổi và có thể thay đổi điều mà các dịch vụ trung gian trả lời. Nó không thay đổi chuỗi nguồn gốc hay yêu cầu kiểm tra sơ bộ.
Một ứng dụng dòng lệnh thường không hiển thị gì về điều đó. Nó có thể không gửi tiêu đề Origin, thường bỏ qua bước kiểm tra sơ bộ và có thể mang thông tin xác thực khác. Nội dung trả về cho curl chỉ chứng minh rằng máy chủ đã trả lời curl.
Tìm phản hồi đã thay đổi
So sánh phản hồi thực tế trên từng đường, không chỉ mã trạng thái. Xem các tiêu đề mang quyền CORS, loại nội dung, mọi chuyển hướng, và liệu một biến thể WAF hay CDN có tạo ra trang khác hay không. Từ chối theo khu vực, chuyển hướng xác thực hoặc trang lỗi thiếu tiêu đề quyền đều thất bại trong trình duyệt trong khi trông giống lỗi CORS. Đó là những khác biệt của đường phân phối, và đó là thứ cần ghi lại.
Ghi lại các tiêu đề phản hồi từ cả hai đường và so sánh từng dòng. Nếu khác biệt duy nhất là thiếu Access-Control-Allow-Origin trên một trang lỗi, bạn đã tìm ra nguyên nhân.
Sửa dịch vụ, không sửa việc thực thi
Khi dịch vụ là của bạn, hãy nêu rõ các nguồn gốc được phép và các tính năng của yêu cầu, rồi đọc các lỗi mà giao diện và các bên trung gian của nó tạo ra. Nếu không, hãy gửi cho chủ dịch vụ một bản so sánh đã làm sạch. Đừng bao giờ đưa cookie, tiêu đề ủy quyền hoặc bản xuất phiên vào báo cáo đó, vì đó là những thông tin xác thực mà chính sách tồn tại để bảo vệ.
Tránh các tiện ích trình duyệt tắt CORS. Chúng thay đổi ranh giới bảo mật trong khi che giấu khác biệt phản hồi cần được giải thích, và để lại cùng thất bại đó cho mọi người dùng khác.
Ghi lại cả hai phản hồi, nguồn gốc đã dùng và đường đã đi. Bản ghi đó biến tin đồn về VPN thành lỗi của dịch vụ.