Tôi có một yêu cầu bất thường. Về cơ bản tôi cần một cách để khi người dùng nhấp vào một liên kết hoặc nút, họ sẽ nhận được một tệp PDF. Phần khó khăn ở đây là máy chủ sẽ không xử lý yêu cầu ở tất cả trừ khi tiêu đề tùy chỉnh được gửi cùng với nó (nếu không thì có vẻ như người đó đã đăng xuất và gửi chúng tới màn hình đăng nhập).Yêu cầu tệp có tiêu đề tùy chỉnh
Hiện tại, cách thức hoạt động của tiêu đề không thể thay đổi được, do đó, đừng ở trên đó; nó sẽ bị thay đổi trong tương lai và là một ứng dụng nội bộ mà tôi không kiểm soát được.
Các tùy chọn Tôi đã khám phá:
- Sử dụng iframe hoặc đơn giản là mở một cửa sổ mới với một số loại con đường đó sẽ trở lại với PDF. Điều này không thể làm việc vì tôi không thể chỉ định tiêu đề bắt buộc cho tệp PDF và sẽ được chuyển hướng trước khi tiếp cận bản thân PDF.
- Sử dụng biểu mẫu và gửi yêu cầu không thể hoạt động vì tôi không thể thêm bất kỳ tiêu đề tùy chỉnh nào vào biểu mẫu (chỉ XHR và plugin có thể, AFAIK).
- Sử dụng XHR không thể làm việc vì, trong khi nó có thể thêm tiêu đề và truy xuất tệp, không có cách nào để lưu tệp đó ở phía máy khách.
Nó sẽ xuất hiện tùy chọn duy nhất của tôi vào thời điểm này cơ bản là:
- Sử dụng một số loại plugin như Flash hoặc Silverlight để yêu cầu các tập tin.
- Buộc thay đổi yêu cầu sớm hơn dự kiến để tiêu đề không còn cần thiết nữa.
Có điều gì tôi thiếu ở đây không? Tôi hy vọng một người nào đó có thể xác minh những phát hiện của tôi hoặc chỉ cho tôi một cái gì đó tôi đã bỏ lỡ bởi vì, theo như tôi có thể nói, không thực sự bất cứ điều gì tôi có thể làm ở đây.
EDIT: Điều này có vẻ apt và khẳng định những gì tôi đã suy nghĩ: XMLHttpRequest to open PDF in browser
Cách thêm một số loại đường hầm giữa ứng dụng và tập lệnh của bạn? Đường hầm có thể truy vấn ứng dụng và nhận tệp, sau đó đặt tiêu đề phù hợp trước khi xóa tệp cho người dùng, do đó thực sự kích hoạt tải xuống. Tôi không biết nếu điều này là có thể cho hệ thống của bạn, tùy thuộc vào an ninh. –
Một đường hầm không phải là một ý tưởng tồi mặc dù tôi không chắc chắn chúng tôi có thể thực hiện điều đó ở đây. Hmm. Cảm ơn, tôi sẽ xem xét nó. – Kris
Nếu bạn có thể làm mà không cần hỗ trợ cho IE <10 (không phải rất có thể, phải không?), Bạn có thể sử dụng các URL XMLHttpRequest Cấp 2 (XHR2) và Blob. Dưới đây là ví dụ: http://stackoverflow.com/q/9620497 Xem thêm http://stackoverflow.com/q/6165266 và http://www.html5rocks.com/en/tutorials/file/xhr2/ –