2012-03-19 53 views
5

Trong API APP Engine, được đề cập rằng, nếu yêu cầu đi kèm với "Accept-Encoding" được đặt, sau đó nó sẽ tự động nén phản hồi.App Engine Accept-Encoding

Nhưng khi tôi xem yêu cầu, tiêu đề không có ở đó. nhưng tại trình duyệt, nó được thiết lập. khi tôi cố gắng thiết lập một cách rõ ràng header (với JQuery ajax chức năng), có một tin nhắn:

Refused to set unsafe header "Accept-Encoding" 

Nhưng tình trạng này không xảy ra khi làm việc trong host nội bộ - yêu cầu có "Accept-Encoding" tiêu đề. điều này xảy ra chỉ sau khi xuất bản. nhưng không cho phép đặt "Accept-Encoding" một cách rõ ràng luôn xảy ra.

Tôi đã tìm kiếm ở khắp mọi nơi, nhưng không thể tìm thấy giải thích cho sự cố. Nó sẽ thực sự hữu ích nếu ai đó có thể giải thích ...

Trả lời

6

Bạn có hai vấn đề khác nhau:

  1. App Engine không nén trả lời. GAE sử dụng một số yếu tố để xác định xem phản hồi có cần được nén hay không. Nó có loại nội dung và tác nhân người dùng vào tài khoản khi quyết định. Xem số answer của Nick Johnson (từ nhóm GAE).

  2. jQuery từ chối đặt tiêu đề "Chấp nhận mã hóa". Lưu ý rằng đây là một vấn đề jQuery và không có gì để làm với GAE. Xem phần này: Is it possible to force jQuery to make AJAX calls for URLs with gzip/deflate enabled?

+1

cảm ơn câu trả lời ... nhưng như tôi đã nói, vấn đề tôi gặp phải là trong tiêu đề HTTPRequest, "Accept-Encoding" là null. Vì vậy, như GAE đã giải thích, không có cách nào GAE có thể nhận ra có nên nén hay không. Nhưng như tôi đã giải thích, khi tôi làm việc trong localhost, "Accept-Encoding" không phải là null. Vì vậy, tôi hơi bối rối ở đây. – KTB

+0

Thật kỳ lạ, khi tôi sử dụng localhost, Accept-Encoding là null, mặc dù trong IntelliJ nó xuất hiện trong quá trình gỡ lỗi trong httpRequest. Nhưng nếu tôi sử dụng getHeader ("Accept-Encoding"), nó trả về null. Rõ ràng GAE phải loại bỏ tiêu đề này. – AndroidDev

3

Tôi có vấn đề tương tự như trong tiêu đề HTTPRequest, "Accept-Encoding" là null. Vì GAE đã giải thích nó sẽ tìm kiếm các tiêu đề Accept-Encoding và User-Agent, nếu nó muốn nén. nhưng trong trường hợp của tôi không có cách nào GAE có thể nhận ra có nên nén hay không.

Từ trình duyệt, sau đó tiêu đề được đặt, nhưng trong tiêu đề yêu cầu, nó không phải là.