2015-09-22 19 views
20

Tôi nhận thấy rằng bất cứ khi nào bạn tải xuống PDF bằng chrome, Chrome luôn thực hiện hai yêu cầu và một trong số các yêu cầu đó. Điều này khiến cho yêu cầu được đăng ký hai lần trong ứng dụng web của tôi, điều mà tôi không muốn. Có cách nào để đưa Chrome chỉ thực hiện một yêu cầu đối với tệp PDF không?Chrome gửi hai yêu cầu khi tải xuống tệp PDF (và hủy một trong số chúng)

Tôi đã nghiên cứu chủ đề này một chút ngay bây giờ và tôi chưa tìm thấy câu trả lời đầy đủ. Các câu trả lời liên quan chặt chẽ cho thấy rằng vấn đề là Chrome đang tìm kiếm một favicon, nhưng tab mạng cho thấy rằng nó thực sự tạo ra cùng một yêu cầu hai lần, và sau đó hủy bỏ yêu cầu thứ hai.

Có cách nào để ngăn Chrome thực hiện yêu cầu thứ hai không?

Dưới đây là liên kết của tệp PDF ngẫu nhiên mà tôi tìm thấy thông qua Google khi được nhấp vào sẽ thể hiện hành vi. Tôi đã đăng một hình ảnh của tab mạng của tôi trong devtools nhưng đây là bài đăng đầu tiên của tôi trên stackoverflow, và trang web cấm tôi tải lên một hình ảnh.

https://www.adobe.com/enterprise/accessibility/pdfs/acro6_pg_ue.pdf

+1

http: // stackoverflow.com/questions/1817750/do-hầu hết các trình duyệt-thực hiện-nhiều-http-yêu-khi-hiển thị-a-pdf-từ-trong-t anh chàng này trả lời rất nhiều câu hỏi của tôi. – gregmagdits

+3

@gredmagdits Tôi không nghĩ rằng nó liên quan đến tiêu đề 'Chấp nhận-Ranges' vì tôi gặp vấn đề ngay cả khi không có tiêu đề 'Chấp nhận-Ranges'. –

+1

Xem câu trả lời này: http://stackoverflow.com/a/37600239/32429 –

Trả lời

11

Nó trông giống như một lỗi trong Chrome: https://bugs.chromium.org/p/chromium/issues/detail?id=587709

Vấn đề là Chrome, khi nó tải một iframe mà trả về một dòng PDF, viết một "nhúng" tag bên trong iframe đó mà một lần nữa chứa cùng một URL với iframe. Điều này kích hoạt yêu cầu cho URL đó một lần nữa, nhưng Chrome ngay lập tức hủy yêu cầu đó. (xem tab mạng) Nhưng vào thời điểm đó, thiệt hại được thực hiện.

Chúng tôi có cùng một vấn đề ở đây và điều này không xảy ra trong Firefox hoặc IE.

Chúng tôi vẫn đang tìm kiếm giải pháp tốt cho vấn đề này.

+0

Đây là vấn đề tôi đang gặp phải. Bao giờ tìm ra bất cứ điều gì? –

+1

Không, chúng tôi phải điều chỉnh chương trình phụ trợ của mình để hỗ trợ nhiều yêu cầu. Lấy làm tiếc! – Moeri

0

Tôi vẫn đang cố gắng tìm một giải pháp thích hợp nhưng như một "sửa chữa" một phần cho bây giờ bạn có thể có hai lựa chọn

1) thiết lập các bố trí nội dung để "đính kèm" trong tiêu đề

thiết lập đến "inline" nguyên nhân chrome để chạy một hủy cuộc gọi thứ hai

ví dụ như vậy bạn có thể làm một cái gì đó như thế (nodejs resp trong ví dụ)

res.writeHead(200, { 
    'Content-Type' : 'application/pdf', 
    'Access-Control-Allow-Origin' : '*', 
    'Content-Disposition' : 'attachment; filename=print.pdf' 
}); 

un may mắn là giải pháp này sẽ buộc trình duyệt tải xuống pdf ngay lập tức thay vì hiển thị nội tuyến và không thể bỏ qua được

2) thêm "expires" vào tiêu đề giải pháp này sẽ luôn hủy cuộc gọi bị hủy thứ hai. server

ví dụ như vậy bạn có thể làm một cái gì đó như thế (resp nodejs trong ví dụ)

res.writeHead(200, { 
    'Content-Type' : 'application/pdf', 
    'Access-Control-Allow-Origin' : '*', 
    'Content-Disposition' : 'inline; filename=print.pdf', 
    'Expires' : new Date(new Date().getTime() + (60000)) 
}); 
0

tôi đã cùng một vấn đề trong một iframe. Tôi đã bật tiện ích mở rộng Trình xem PDF và sự cố đã biến mất. Tôi đang nghĩ rằng tiện ích tải xuống tệp hai lần. Lần đầu tiên nhận kích thước, lần thứ hai tải xuống bằng thanh tiến trình (sử dụng kích thước được thu thập trong yêu cầu đầu tiên)

Các vấn đề liên quan