2012-12-06 34 views
15

मैंने सोचा कि यह एक साधारण Google खोज थी, लेकिन स्पष्ट रूप से मैं उस पर गलत हूं।HTTP क्लाइंट के लिए gzip प्रतिक्रियाओं को अक्षम करने के लिए HTTP सर्वर को निर्देश देने के लिए कैननिकल विधि क्या है?

मैंने देखा है कि आप की आपूर्ति करना चाहिए:

Accept-Encoding: gzip;q=0,deflate;q=0 
अनुरोध शीर्षों में

। हालांकि, इस आलेख ने सुझाव दिया कि यह भी ध्यान दिया गया है कि प्रॉक्सी नियमित रूप से उस शीर्षलेख को अनदेखा करते हैं। इसके अलावा, जब मैंने इसे nginx पर आपूर्ति की, तो यह अभी भी प्रतिक्रिया संदेश निकाय को संपीड़ित कर दिया।

http://forgetmenotes.blogspot.ca/2009/05/how-to-disable-gzip-compression-in.html

तो, कैसे मैं एक वेब सर्वर प्रतिक्रिया संदेश के मुख्य भाग पर संपीड़न निष्क्रिय करने के लिए बताऊँ?

+0

मैं उलझन में हूं: क्या आप निर्देश भेजना चाहते हैं क्लाइंट के लिए क्लाइंट, क्या आप कुछ ऐसा चाहते हैं जो किसी भी अनिच्छुक प्रॉक्सी के माध्यम से गुजरने की गारंटी है या आप किसी भी परिस्थिति में सर्वर को संपीड़ित नहीं करने के निर्देश को निर्देश देना चाहते हैं? – fvu

+0

उत्तरार्द्ध ... मैं किसी भी परिस्थिति में संपीड़ित नहीं होने के लिए सर्वर को बताने का निर्देश चाहता हूं – Homer6

+0

ध्यान दें कि सभी संपीड़न को रोकने के लिए आप शायद gzip को अस्वीकार करने और डिफ्लेट करने के बजाय '*; q = 0' का उपयोग करना चाहते हैं। यह कहा जा रहा है, मैं वास्तव में सोच रहा हूं कि कई सर्वर स्वीकार्य-एन्कोडिंग सुविधा से परेशान नहीं हैं जैसा उन्हें करना चाहिए। 'स्वीकृति-एन्कोडिंग: पहचान' भी है ... –

उत्तर

10

आप पूरी तरह अक्षम होने एन्कोडिंग चाहते हैं?
फिर http अनुरोध हेडर के भीतर स्वीकार करें-एन्कोडिंग हेडर को छोड़ दें।

क्या आप केवल http प्रतिक्रिया में अनुपस्थित होने के लिए gzip संपीड़न चाहते हैं?
फिर http अनुरोध शीर्षलेख में मान सूची से gzip छोड़ें।

क्या आप सर्वरों का समर्थन करने वाली विभिन्न संपीड़न तकनीकों को प्राथमिकता देना चाहते हैं? फिर Accept-Encoding http अनुरोध शीर्षलेख में प्रत्येक मान के लिए q तर्क के साथ 0 और 1 के बीच विभिन्न मानों का उपयोग करें।(वर्तमान में आप विवादित मूल्य का उपयोग कर रहे हैं और वजन = 0 द्वारा इंगित कर रहे हैं कि आप नहीं जानते कि आप कैसे प्रबंधित करेंगे, लेकिन आप किसी भी तरह एन्कोड किए जाने की प्रतिक्रिया चाहते हैं)

+1

प्रॉक्सी के लिए उनके कैश से प्रदत्त सामग्री के लिए स्वीकृति-एन्कोडिंग http शीर्षलेख पर विचार करने के लिए, Vary http Response हेडर का उपयोग http अनुरोध शीर्षलेखों जैसे स्वीकृति-एन्कोडिंग के साथ अपनी मान सूची के रूप में किया जाता है, इसलिए प्रॉक्सी जानता है कि कैश की गई प्रतिलिपि के अनुसार भिन्न होता है जो http अनुरोध हेडर। –

+2

नहीं नहीं। डब्ल्यू 3 सी स्पेक (https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.3) स्पष्ट रूप से कहता है कि "यदि अनुरोध में कोई स्वीकृति-एन्कोडिंग फ़ील्ड मौजूद नहीं है, तो सर्वर मान ले सकता है कि ग्राहक किसी भी सामग्री कोडिंग स्वीकार करेगा। " इसके अलावा "नोट: यदि अनुरोध में स्वीकृति-एन्कोडिंग फ़ील्ड शामिल नहीं है, और यदि" पहचान "सामग्री-कोडिंग अनुपलब्ध है, तो सामग्री-कोडिंग आमतौर पर HTTP/1.0 क्लाइंट (यानी," gzip "और" compress ") द्वारा समझा जाता है पसंद किया जाता है; " – roryhewitt

+1

https://tools.ietf.org/html/rfc2616#section-14.3 आपने अंतरिम वाक्य को याद किया "इस मामले में, यदि" पहचान "उपलब्ध सामग्री-कोडिंग में से एक है, तो सर्वर को" पहचान "सामग्री-कोडिंग, जब तक कि अतिरिक्त जानकारी न हो कि क्लाइंट के लिए एक अलग सामग्री-कोडिंग अर्थपूर्ण है।", इसलिए नोट सबसे अधिक अंतिम उपाय है। इसके अलावा आईईटीएफ http सहित इंटरनेट प्रोटोकॉल पर कैननिकल अथॉरिटी है, और इस उत्तर के समय http1.1 मानक था। आपके जैसे जिज्ञासु और किनारे के मामलों के लिए, मेरा अनुमान लिंक का जिक्र कर रहा है क्योंकि इस टिप्पणी में पर्याप्त होना चाहिए। –

13

कई वेब सर्वर 'q' पैरामीटर को अनदेखा करते हैं। एक स्थिर संसाधन का संपीड़ित संस्करण अक्सर कैश किया जाता है और जब भी अनुरोध स्वीकार करता है तो उसे वापस कर दिया जाता है। संपीड़ित संसाधनों से बचने के लिए,

Accept-Encoding: identity 

सर्वर को इस उदाहरण में संसाधन का संपीड़ित प्रतिनिधित्व नहीं करना चाहिए। न ही कोई प्रॉक्सी चाहिए। यदि कोई भी दिया गया है तो यह डिफ़ॉल्ट स्वीकृत एन्कोडिंग है, लेकिन आपका क्लाइंट एक डिफ़ॉल्ट जोड़ सकता है जो gzip स्वीकार करता है, इसलिए स्पष्ट रूप से 'पहचान' प्रदान करने से चाल चलनी चाहिए।

+0

दुर्भाग्य से, nginx इसका सम्मान नहीं करता है। मैं अभी भी सामग्री वापस gzipped मिलता है। – Homer6

+1

ध्यान दें कि 'स्वीकृति-एन्कोडिंग' पहचान के बराबर नहीं है। दस्तावेज स्पष्ट रूप से कहता है कि सर्वर यह तय कर सकता है कि एन्कोडिंग निर्दिष्ट नहीं होने पर क्या करना है। –

3

मुझे लगता है कि Nginx

http://wiki.nginx.org/HttpGzipModule (1)

के लिए अपाचे

http://httpd.apache.org/docs/2.2/mod/mod_deflate.html (2)

के लिए इस आधुनिक और यह तुम क्या निर्भर करता है की जरूरत है की तरह लगता है जो सर्वर पर आप की योजना उपयोग। बाकी आप पर निर्भर करता है!

कृपया nginx मॉड्यूल ध्यान दें दोनों विसंपीड़न नीचे बंद की अनुमति देता है:

[edit] gzip 
Syntax: gzip on | off 
Default: off 
Context: http 
server 
location 
if in location 
Reference: gzip 



Enables or disables gzip compression. 

और प्रॉक्सी के साथ काम:

[edit] gzip_proxied 
Syntax: gzip_proxied off | expired | no-cache | no-store | private | no_last_modified | no_etag | auth | any ... 
Default: off 
Context: http 
server 
location 
Reference: gzip_proxied 



It allows or disallows the compression of the response for the proxy request in the dependence on the request and the response. The fact that, request proxy, is determined on the basis of line "Via" in the headers of request. In the directive it is possible to indicate simultaneously several parameters: 

off - disables compression for all proxied requests 
expired - enables compression, if the "Expires" header prevents caching 
no-cache - enables compression if "Cache-Control" header is set to "no-cache" 
no-store - enables compression if "Cache-Control" header is set to "no-store" 
private - enables compression if "Cache-Control" header is set to "private" 
no_last_modified - enables compression if "Last-Modified" isn't set 
no_etag - enables compression if there is no "ETag" header 
auth - enables compression if there is an "Authorization" header 
any - enables compression for all requests 
[edit] gzip_types 

शुभकामनाएं!

सूत्रों का कहना है:

1) http://forum.nginx.org/read.php?11,96472,214303

2) http://httpd.apache.org/docs/2.2/mod/mod_deflate.html#inflate (धारा आउटपुट विसंपीड़न)