Báo cáo mở trong trình duyệt, các tham số được kết xuất, và nút xuất tạo ra lỗi, bản tải xuống trống hoặc tệp mà bảng tính từ chối mở. Sự kết hợp đó có một hình dạng chuẩn. Một trang báo cáo đang hoạt động đã kiểm tra việc kết xuất và xác thực, và không gì khác. Việc xuất là một yêu cầu riêng với phản hồi riêng, và qua một cổng không có ứng dụng khách, nó cũng đi qua một lớp viết lại chưa bao giờ được thiết kế cho việc tải tệp xuống.

Hai đường, một trang hoạt động

Kết xuất và xuất là những thao tác khác nhau ngay cả khi chúng bắt đầu từ cùng một nút. Máy chủ báo cáo kết xuất trang cho trình duyệt và kết xuất bản xuất qua một tiện ích đầu ra khác với loại nội dung riêng và hành vi lỗi riêng, như tài liệu xuất mô tả. Một cổng cho qua hoàn hảo cái thứ nhất vẫn có thể làm hỏng cái thứ hai, vì cái thứ hai là phản hồi mà cổng không ngờ thấy. Hai cái chia sẻ một phiên và một địa chỉ, và gần như không gì khác.

Hãy coi trang đang hoạt động chỉ là bằng chứng về xác thực và khả năng tiếp cận. Nó chứng minh rằng tài khoản có thể đến máy chủ báo cáo và cổng chuyển tiếp HTML. Nó không nói gì về phản hồi tệp, tiêu đề bố trí nội dung hay chuyển hướng kết thúc bằng tải xuống thay vì tài liệu.

Đó là toàn bộ lý do để so sánh đường xuất riêng lẻ thay vì kiểm tra lại trang đã hoạt động. Hai yêu cầu chia sẻ một phiên vẫn là hai yêu cầu.

Ba điều kiện quyết định nơi bản xuất bị gãy

Ba câu hỏi xác định vị trí lỗi nhanh chóng, và mỗi câu trả lời chỉ ra một chủ sở hữu khác.

Thứ nhất, cùng báo cáo, tài khoản và định dạng có xuất đúng từ mạng nội bộ không? Nếu có, máy chủ báo cáo và bộ kết xuất của nó vẫn ổn và khác biệt nằm ở đường truy cập. Thứ hai, phản hồi thất bại có mang loại nội dung tệp, hay một trang HTML khoác phần mở rộng tệp? Điều đó tách lỗi bộ kết xuất khỏi sự thay thế của cổng. Thứ ba, cổng có viết lại URL của yêu cầu hay xóa tiêu đề khỏi phản hồi không? Một URL bị viết lại có thể hạ cánh ở một điểm cuối hoàn toàn khác.

Hãy trả lời cả ba trước khi thay đổi bất kỳ cài đặt nào, vì mỗi cái có một cách khắc phục khác. Lỗi bộ kết xuất thuộc về máy chủ báo cáo, nội dung bị thay thế thuộc về cổng, và tiêu đề bị xóa là câu hỏi chính sách, không phải lỗi.

Ghi lại các câu trả lời. Một hồ sơ hỗ trợ dựng từ ba dòng đó đáng giá mười ảnh chụp màn hình.

Đọc phản hồi xuất thay vì mã trạng thái

Trạng thái HTTP thành công chỉ chứng minh rằng có gì đó đã trả lời yêu cầu. Hãy kiểm tra nội dung và tiêu đề cùng nhau, vì lỗi thú vị là một phản hồi thành công mang nội dung sai.

curl -sS -D export.headers -o export.bin --location "https://portal.example.com/reports/export?format=xlsx"
file export.bin
head -c 300 export.bin

Bản kết xuất tiêu đề hiển thị loại nội dung và mọi bố trí nội dung mà cổng trả về. Lệnh file xác định nội dung thực sự là gì, và một tệp văn bản ở nơi đáng lẽ là bảng tính chính là trang đăng nhập bị thay thế kinh điển. Lệnh head hiển thị đủ để nhận ra HTML mà không đổ cả báo cáo vào thiết bị đầu cuối.

Xóa cookie phiên và token trước khi chia sẻ bất kỳ phần nào của nó. Bản ghi một lần xuất đang hoạt động là bằng chứng hữu ích, và bản ghi một phiên của người khác là một sự cố.

Giới hạn ngoại lệ cho ứng dụng, không phải tài khoản

Nếu cổng viết lại hoặc chặn phản hồi, cách sửa hấp dẫn là miễn trừ toàn bộ trang web hoặc làm báo cáo ẩn danh. Cả hai đều sửa bản tải xuống và loại bỏ lý do cổng tồn tại. Một ngoại lệ được thu hẹp nêu tên một đường ứng dụng, một loại nội dung và một hướng, và nó vẫn có thể được xem xét bởi người sở hữu chính sách.

Dùng phiên bản cổng mà bạn thực sự chạy và các cài đặt ứng dụng được ghi lại của nó. Một tùy chọn mà nhà cung cấp từng mô tả là để lưu lượng không thay đổi không phải là hướng dẫn chung, và sao chép nó từ một chủ đề diễn đàn cũ là cách một ngoại lệ tạm thời trở thành kiến trúc vĩnh viễn.

Nếu ngoại lệ không thể thu hẹp đến mức đó, bản xuất có lẽ thuộc đường nội bộ với một phương thức truy cập khác thay vì phía sau cổng. Miễn trừ toàn bộ trang web là quyết định của chủ sở hữu cổng, không phải lối vòng cho một báo cáo.

Chấp nhận bản xuất, không phải hộp thoại Lưu

Kiểm tra cuối cùng là chính tệp: nó mở được, nó giữ các cột mong đợi, và tổng của nó khớp với báo cáo mà người dùng đã phê duyệt.

Việc xuất hiện hộp thoại Lưu không phải là thành công, và một tệp mở ra với cảnh báo sửa chữa cũng không phải thành công. Hãy so sánh số hàng và một giá trị đã biết với báo cáo trên màn hình, vì một bản xuất bị cắt cụt vượt qua mọi kiểm tra chỉ nhìn vào kích thước tệp. Sau đó xuất lần thứ hai, vì một lớp bộ nhớ đệm từng phục vụ nội dung sai có thể phục vụ nội dung đúng trong lần thử tiếp theo.

Chấp nhận quy trình làm việc mà người dùng cần, và không kém hơn thế. Một bản tải xuống mở trong ứng dụng sai vẫn là một lần xuất thất bại.

Bài viết liên quan