Thử lại xác thực qua proxy và phần thân tải lên không thể phát lại
Hiểu vì sao việc thử lại xác thực có thể làm lộ luồng tải lên một lần, và chủ động chọn bộ đệm có giới hạn hoặc nội dung có thể phát lại.
Một GET có thể xác thực qua proxy trong khi POST hoặc PUT thất bại với lỗi thân không thể phát lại hoặc tua lại. Tài khoản có thể vẫn đúng: quá trình trao đổi xác thực có thể cần thêm một yêu cầu sau khi máy khách đã dùng hết phần tải lên.
| Nguồn thân | Lựa chọn phát lại |
|---|---|
| Thân nhỏ có giới hạn | Bộ đệm có giới hạn có thể giữ các byte của nó. |
| Tệp có thể tìm kiếm | Giao diện tua lại mà máy khách hỗ trợ có thể làm cho nó phát lại được. |
| Bộ tạo, đường ống hoặc nhà sản xuất trực tiếp | Nguồn một lần có thể cần thiết kế khác. |
libcurl ghi lại các callback tìm kiếm cho các mục đích bao gồm xác thực nhiều lượt. Jersey cung cấp các chế độ xử lý thực thể có bộ đệm và chia phần tùy thuộc vào hành vi của trình kết nối. Một ví dụ về trình kết nối Jersey 2 Apache cho thấy thiết lập có bộ đệm. Không cái nào làm cho việc tải lên không giới hạn trong bộ nhớ trở nên phù hợp.
Tái tạo phương thức và nguồn thân bị lỗi. GET chuẩn bị không có phần tải lên để phát lại, và nó không chứng minh rằng một lần tải lên sau đó dùng chung kết nối hoặc trạng thái xác thực của nó. Một đích, đối tượng máy khách hoặc chính sách kết nối mới có thể thay đổi điều đó. Thân dựa trên tệp và luồng trực tiếp cũng khác nhau ngay cả khi văn bản mẫu của chúng giống nhau.
Nếu bạn đệm, hãy xác định giới hạn kích thước, vị trí lưu trữ và thời gian tồn tại. Các lần tải lên đồng thời nhân chi phí lên, và dữ liệu nhạy cảm vẫn ở nơi bộ đệm được giữ.
Xác thực trước với một proxy tương thích đã biết có thể tránh một thách thức ban đầu. Tuy nhiên nó không thể loại trừ mọi vòng xác thực, chuyển hướng hoặc kết nối đã đóng về sau có thể đòi hỏi một lần thử khác.
Giữ cùng nhau phản hồi của proxy, điểm tiêu thụ thân và lỗi phát lại. Sau đó phân biệt phát lại giao thức với kết quả ứng dụng không chắc chắn: một lần gửi có thể đã được xử lý trước khi phản hồi của nó bị mất. Tuân theo quy tắc idempotency của đích trước khi gửi lại.