php - क्रोम नेट:: ERR_INCOMPLETE_CHUNKED_ENCODING त्रुटि




apache google-chrome (18)

पिछले दो महीनों से, मुझे क्रोम के डेवलपर कंसोल पर निम्न त्रुटि मिल रही है:

net::ERR_INCOMPLETE_CHUNKED_ENCODING

लक्षण:

  • पेज लोड नहीं हो रहा है।
  • कटा हुआ सीएसएस और जेएस फाइलें।
  • लटकने वाले पेज।

सर्वर पर्यावरण:

  • अपाचे 2.2.22
  • पीएचपी
  • उबंटू

यह हमारे घर के अपाचे सर्वर पर मेरे साथ हो रहा है। यह किसी और के साथ नहीं हो रहा है - यानी हमारे उपयोगकर्ताओं में से कोई भी इस समस्या का सामना नहीं कर रहा है - न ही हमारी देव टीम पर कोई और है।

अन्य लोग क्रोम के सटीक संस्करण के साथ सटीक उसी सर्वर तक पहुंच रहे हैं। मैंने गुप्त मोड में सभी एक्सटेंशन और ब्राउजिंग को अक्षम करने का भी प्रयास किया है - कोई प्रभाव नहीं।

मैंने फ़ायरफ़ॉक्स का उपयोग किया है और सटीक वही बात हो रही है। छंटनी की गई फाइलें और क्या नहीं। एकमात्र चीज यह है कि फ़ायरफ़ॉक्स किसी भी कंसोल त्रुटियों को नहीं बढ़ाता है, इसलिए आपको समस्या देखने के लिए फायरबग के माध्यम से HTTP अनुरोध का निरीक्षण करने की आवश्यकता है।

अपाचे से प्रतिक्रिया शीर्षलेख:

Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection:close
Content-Encoding:gzip
Content-Type:text/html; charset=utf-8
Date:Mon, 27 Apr 2015 10:52:52 GMT
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Pragma:no-cache
Server:Apache/2.2.22 (Ubuntu)
Transfer-Encoding:chunked
Vary:Accept-Encoding
X-Powered-By:PHP/5.3.10-1ubuntu3.8

परीक्षण करते समय, मैं अपनी htaccess फ़ाइल में HTTP 1.0 को मजबूर कर समस्या को ठीक करने में सक्षम था:

SetEnv downgrade-1.0

यह समस्या से छुटकारा पाता है। हालांकि, HTTP 1.1 पर HTTP 1.0 को मजबूर करना एक उचित समाधान नहीं है।

अपडेट करें : क्योंकि मैं इस मुद्दे का सामना करने वाला अकेला हूं, मुझे लगा कि मुझे अधिक समय बिताने की जरूरत है कि यह क्लाइंट साइड इश्यू है या नहीं। अगर मैं क्रोम की सेटिंग्स में जाता हूं और "डिफ़ॉल्ट पर पुनर्स्थापित करें" विकल्प का उपयोग करता हूं, तो समस्या लगभग 10-20 मिनट तक गायब हो जाएगी । फिर यह लौटता है।


Drupal 8 (सिम्फनी फ्रेमवर्क) में एक नियंत्रक के संदर्भ में इस समाधान ने मेरे लिए काम किया:

$response = new Response($form_markup, 200, array(
  'Cache-Control' => 'no-cache',
));

$content = $response->getContent();
$contentLength = strlen($content);
$response->headers->set('Content-Length', $contentLength);

return $response;

अन्यथा प्रतिक्रिया हेडर 'ट्रांसफर-एन्कोडिंग' को 'chunked' मान मिला। यह क्रोम ब्राउज़र के लिए एक समस्या हो सकती है।


अगर मैं किसी को भी मूडल के साथ एक ही समस्या हो सकती है तो मैं सिर्फ आपके साथ अपने अनुभव साझा करना चाहता था।

हमारा मूडल प्लेटफ़ॉर्म अचानक धीरे-धीरे था, डैशबोर्ड को लोड करने के लिए लगभग 2-3 गुना अधिक (6 सेकंड तक) ले जाता था, फिर सामान्य और समय-समय पर कुछ पेज लोड नहीं होते थे (404 त्रुटि नहीं बल्कि एक खाली पृष्ठ )। डेवलपर टूल्स कंसोल में निम्न त्रुटि दिखाई दे रही थी: net::ERR_INCOMPLETE_CHUNKED_ENCODING.

इस त्रुटि की खोज में, ऐसा लगता है कि क्रोम मुद्दा है, लेकिन हमें विभिन्न ब्राउज़रों के साथ समस्या थी। अंततः समस्या को हल करने के कुछ दिनों पहले डेटाबेस के शोध और तुलना करने के बाद, किसी ने इवेंट मॉनीटरिंग चालू कर दी। हालांकि, "कॉन्फ़िगर चेंज" लॉग में, यह परिवर्तन दिखाई नहीं दे रहा था! इवेंट मॉनीटरिंग को बंद करना, आखिरकार समस्या हल हो गई - हमारे पास ईवेंट निगरानी के लिए कोई नियम परिभाषित नहीं था।

हम मारियाडीबी और PHP 5.4 के साथ मूडल 3.1.2+ चला रहे हैं।


ओएमजी, मुझे 5 मिनट पहले एक ही समस्या थी। मैंने समाधान खोजने के लिए कई घंटे बिताए। पहली नजर में विंडोज़ पर एंटीवायरस हल समस्या को अक्षम करना। लेकिन फिर मैंने एंटीवायरस के साथ अन्य लिनक्स पीसी पर समस्या देखी। Nginx लॉग में कोई त्रुटि नहीं है। मेरे uwsgi ने "टूटा हुआ पाइप" के बारे में कुछ दिखाया लेकिन सभी अनुरोधों पर नहीं। क्या आपको पता है? डिवाइस पर कोई स्थान नहीं छोड़ा गया था, जिसे मैंने डेटाबेस लॉग पर सर्वर को पुनरारंभ करते समय पाया, और df ने इसे मंजूरी दे दी। एंटीवायरस को हल करने के बारे में केवल स्पष्टीकरण यह है कि यह ब्राउज़र कैशिंग को रोकता है (इसे प्रत्येक अनुरोध की जांच करनी चाहिए), लेकिन कुछ अजीब व्यवहार वाले ब्राउज़र केवल खराब प्रतिक्रिया को अनदेखा कर सकते हैं और कैश प्रतिक्रियाएं दिखा सकते हैं।


कुंआ। बहुत समय पहले मैंने इस सवाल से भी मुलाकात की थी। और अंततः मुझे ऐसे समाधान मिलते हैं जो वास्तव में इस मुद्दे को संबोधित करते हैं।

मेरी समस्या के लक्षण भी लोड नहीं हो रहे हैं और जेसन डेटा को यादृच्छिक रूप से छोटा कर दिया गया है।

यहां समाधान हैं जो सारांश मैं इस समस्या को हल करने में मदद कर सकता हूं

1.Kill the anti-virus software process
2.Close chrome's Prerendering Instant pages feature
3.Try to close all the apps in your browser
4.Try to define your Content-Length header
  <?php
     header('Content-length: ' . strlen($output));
  ?>
5.Check your nginx fastcgi buffer is right 
6.Check your nginx gzip is open

त्रुटि यह कहने की कोशिश कर रही है कि पेज भेजा जा रहा था, जबकि क्रोम काट दिया गया था। आपका मुद्दा यह पता लगाने की कोशिश कर रहा है कि क्यों।

जाहिर है यह क्रोम के कुछ संस्करणों को प्रभावित करने वाला एक ज्ञात मुद्दा हो सकता है। जहां तक ​​मैं यह कह सकता हूं कि इन संस्करणों का एक मुद्दा है जो भेजे गए खंड की सामग्री लंबाई और उस खंड के व्यक्त आकार के लिए बड़े पैमाने पर संवेदनशील है (मैं उस पर बहुत दूर हो सकता हूं)। संक्षेप में थोड़ा अपूर्ण हेडर मुद्दे।

दूसरी ओर, यह हो सकता है कि सर्वर टर्मिनल 0-लंबाई का हिस्सा नहीं भेजता है। जो ob_flush(); साथ फिक्स करने ob_flush(); हो सकता है ob_flush(); । यह भी संभव है कि क्रोम (या कनेक्शन या कुछ) धीमा हो रहा है ताकि जब कनेक्शन बंद हो जाए तो पृष्ठ अभी तक लोड नहीं हुआ है। मुझे नहीं पता कि यह क्यों हो सकता है।

पागल प्रोग्रामर जवाब यहां दिए गए हैं:

<?php
    // ... your code
    flush();
    ob_flush();
    sleep(2);
    exit(0);
?>

आपके मामले में यह स्क्रिप्ट टाइमिंग का मामला हो सकता है। मुझे सच में यकीन नहीं है कि इसे केवल आपको क्यों प्रभावित करना चाहिए, लेकिन यह दौड़ की स्थिति के गुच्छा के लिए किया जा सकता है? यह एक अनुमान है। आपको स्क्रिप्ट निष्पादन समय को विस्तारित करके इसका परीक्षण करने में सक्षम होना चाहिए।

<?php
    // ... your while code
    set_time_limit(30);
    // ... more while code
?>

यह उतना आसान हो सकता है जितना आपको अपने क्रोम इंस्टॉल को अपडेट करने की आवश्यकता है (क्योंकि यह समस्या क्रोम विशिष्ट है)।

अद्यतन: मैं इस त्रुटि को दोहराने में सक्षम था (आखिर में) जब एक घातक त्रुटि फेंक दी गई थी, जबकि PHP (उसी लोकहोस्ट पर) आउटपुट बफरिंग था। मुझे कल्पना है कि आउटपुट बहुत अधिक उपयोग के लिए बहुत बुरी तरह उलझा हुआ था (हेडर लेकिन कम या कोई सामग्री नहीं)।

विशेष रूप से, मैंने गलती से मेरे कोड को PHP तक स्वयं को बुलाया था, ठीक है, छोड़ दिया। इस प्रकार, सर्वर टर्मिनल 0-लंबाई खंड नहीं भेजता - जो कि मैंने पहले की पहचान की थी।


निम्नलिखित प्रत्येक ग्राहक के लिए इसे ठीक करना चाहिए।

//Gather output (if it is not already in a variable, use ob_start() and ob_get_clean() )    

// Before sending output:
header('Content-length: ' . strlen($output));

लेकिन मेरे मामले में निम्नलिखित एक बेहतर विकल्प था और इसे भी ठीक किया गया:

.htaccess:

php_value opcache.enable 0

मुझे क्रोम और फ़ायरफ़ॉक्स में साइट के साथ यह समस्या थी। अगर मैंने अवास्ट वेब शील्ड को बंद कर दिया तो यह चले गए। ऐसा लगता है कि मैं अपने एचटीएसीएएस फ़ाइल में एचटीएमएल 5 बॉयलरप्लेट एचटीएसीएसी को जोड़कर वेब शील्ड के साथ काम करने में कामयाब रहा हूं:

# ------------------------------------------------------------------------------
# | Expires headers (for better cache control)                                 |
# ------------------------------------------------------------------------------

# The following expires headers are set pretty far in the future. If you don't
# control versioning with filename-based cache busting, consider lowering the
# cache time for resources like CSS and JS to something like 1 week.

<IfModule mod_expires.c>

    ExpiresActive on
    ExpiresDefault                                      "access plus 1 month"

  # CSS
    ExpiresByType text/css                              "access plus 1 week"

  # Data interchange
    ExpiresByType application/json                      "access plus 0 seconds"
    ExpiresByType application/xml                       "access plus 0 seconds"
    ExpiresByType text/xml                              "access plus 0 seconds"

  # Favicon (cannot be renamed!)
    ExpiresByType image/x-icon                          "access plus 1 week"

  # HTML components (HTCs)
    ExpiresByType text/x-component                      "access plus 1 month"

  # HTML
    ExpiresByType text/html                             "access plus 0 seconds"

  # JavaScript
    ExpiresByType application/javascript                "access plus 1 week"

  # Manifest files
    ExpiresByType application/x-web-app-manifest+json   "access plus 0 seconds"
    ExpiresByType text/cache-manifest                   "access plus 0 seconds"

  # Media
    ExpiresByType audio/ogg                             "access plus 1 month"
    ExpiresByType image/gif                             "access plus 1 month"
    ExpiresByType image/jpeg                            "access plus 1 month"
    ExpiresByType image/png                             "access plus 1 month"
    ExpiresByType video/mp4                             "access plus 1 month"
    ExpiresByType video/ogg                             "access plus 1 month"
    ExpiresByType video/webm                            "access plus 1 month"

  # Web feeds
    ExpiresByType application/atom+xml                  "access plus 1 hour"
    ExpiresByType application/rss+xml                   "access plus 1 hour"

  # Web fonts
    ExpiresByType application/font-woff                 "access plus 1 month"
    ExpiresByType application/vnd.ms-fontobject         "access plus 1 month"
    ExpiresByType application/x-font-ttf                "access plus 1 month"
    ExpiresByType font/opentype                         "access plus 1 month"
    ExpiresByType image/svg+xml                         "access plus 1 month"

</IfModule>

# ------------------------------------------------------------------------------
# | Compression                                                                |
# ------------------------------------------------------------------------------

<IfModule mod_deflate.c>

    # Force compression for mangled headers.
    # http://developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping
    <IfModule mod_setenvif.c>
        <IfModule mod_headers.c>
            SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
            RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
        </IfModule>
    </IfModule>

    # Compress all output labeled with one of the following MIME-types
    # (for Apache versions below 2.3.7, you don't need to enable `mod_filter`
    #  and can remove the `<IfModule mod_filter.c>` and `</IfModule>` lines
    #  as `AddOutputFilterByType` is still in the core directives).
    <IfModule mod_filter.c>
        AddOutputFilterByType DEFLATE application/atom+xml \
                                      application/javascript \
                                      application/json \
                                      application/rss+xml \
                                      application/vnd.ms-fontobject \
                                      application/x-font-ttf \
                                      application/x-web-app-manifest+json \
                                      application/xhtml+xml \
                                      application/xml \
                                      font/opentype \
                                      image/svg+xml \
                                      image/x-icon \
                                      text/css \
                                      text/html \
                                      text/plain \
                                      text/x-component \
                                      text/xml
    </IfModule>

</IfModule>

# ------------------------------------------------------------------------------
# | Persistent connections                                                     |
# ------------------------------------------------------------------------------

# Allow multiple requests to be sent over the same TCP connection:
# http://httpd.apache.org/docs/current/en/mod/core.html#keepalive.

# Enable if you serve a lot of static content but, be aware of the
# possible disadvantages!

 <IfModule mod_headers.c>
    Header set Connection Keep-Alive
 </IfModule>

मुझे खेद है, मेरे पास आपके लिए सटीक उत्तर नहीं है। लेकिन मुझे इस समस्या का भी सामना करना पड़ा, और, कम से कम मेरे मामले में, इसके चारों ओर एक रास्ता मिला। तो शायद यह किसी और को कुछ सुराग प्रदान करेगा जो हुड के नीचे पीएचपी के बारे में अधिक जानता है।

परिदृश्य है, मेरे पास एक समारोह में एक सरणी पास की गई है। इस सरणी की सामग्री का उपयोग एचटीएमएल स्ट्रिंग को ब्राउज़र पर वापस भेजने के लिए किया जा रहा है, इसे सभी को वैश्विक वैरिएबल के अंदर रखकर बाद में मुद्रित किया जा सकता है। (यह फ़ंक्शन वास्तव में कुछ भी वापस नहीं कर रहा है। मैला, मुझे पता है, लेकिन यह बिंदु के बगल में है।) इस सरणी के अंदर, अन्य चीजों के अलावा, कुछ तत्व हैं, संदर्भ के अनुसार, नेस्टेड एसोसिएटिव सरणी जिन्हें इस फ़ंक्शन के बाहर परिभाषित किया गया था । प्रक्रिया-उन्मूलन के द्वारा, मैंने पाया कि इस संदर्भ में इस सरणी के अंदर किसी भी तत्व का हेरफेर, संदर्भित या नहीं, जिसमें उन संदर्भित तत्वों को अनसेट करने का प्रयास शामिल है, जिसके परिणामस्वरूप क्रोम नेट :: ERR_INCOMPLETE_CHUNKED_ENCODING त्रुटि फेंक रहा है और कोई सामग्री प्रदर्शित नहीं करता है। यह इस तथ्य के बावजूद है कि वैश्विक चर में HTML स्ट्रिंग बिल्कुल वैसा ही होना चाहिए।

केवल पहली जगह में सरणी तत्वों के संदर्भों को लागू न करने के लिए स्क्रिप्ट को पुन: टूलिंग करके चीजें सामान्य रूप से फिर से काम करना शुरू कर देती हैं। मुझे संदेह है कि यह वास्तव में एक पीएचपी बग है जिसमें सामग्री-लंबाई वाले शीर्षकों को फेंकने वाले संदर्भित तत्वों की उपस्थिति के साथ कुछ करना है, लेकिन मुझे वास्तव में यह सुनिश्चित करने के लिए पर्याप्त जानकारी नहीं है।


मुझे यह मुद्दा था। इस प्रश्न पर अन्य उत्तरों की कोशिश करने के बाद इसे ट्रैक किया गया। यह /var/lib/nginx के मालिक और अनुमतियों के कारण हुआ था और अधिक विशेष रूप से /var/lib/nginx/tmp निर्देशिका गलत है।

टीएमपी निर्देशिका का उपयोग फास्ट-सीजीआई द्वारा प्रतिक्रियाओं को कैश करने के लिए किया जाता है क्योंकि वे उत्पन्न होते हैं, लेकिन केवल तभी जब वे एक निश्चित आकार से ऊपर होते हैं। तो मुद्दा अस्थायी है और केवल तब होता है जब उत्पन्न प्रतिक्रिया बड़ी होती है।

यह देखने के लिए कि क्या आपको अनुमति समस्याएं हैं, nginx <host_name>.error_log देखें।

ठीक करने के लिए, सुनिश्चित करें कि /var/lib/nginx का मालिक और समूह और सभी उप-डीआईआर nginx है।


मुझे यह समस्या थी (क्रोम में ERR_INCOMPLETE_CHUNKED_ENCODING दिखा रहा है, अन्य ब्राउज़रों में कुछ नहीं)। मेरी आउटपुट प्रदाता गोडाडी ने मेरे आउटपुट के अंत में एक निगरानी स्क्रिप्ट जोड़कर समस्या को बदल दिया।

https://www.godaddy.com/community/cPanel-Hosting/how-to-remove-additional-quot-monitoring-quot-script-added/td-p/62592


मेरा फिक्स है:

<?php  ob_start(); ?>
<!DOCTYPE html>
<html lang="de">
.....
....//your whole code
....
</html>
<?php
        ob_clean();
ob_end_flush();

ob_flush();

?>

उम्मीद है कि इससे भविष्य में किसी की मदद मिलेगी, और मेरे मामले में यह एक कैस्पर्सकी मुद्दा है लेकिन उपरोक्त फिक्स महान काम करता है :)


मेरे मामले में मैं /usr/local/var/run/nginx/fastcgi_temp/3/07/0000000073" failed (13: Permission denied) जो शायद क्रोम नेट :: ERR_INCOMPLETE_CHUNKED_ENCODING त्रुटि उत्पन्न हुई थी।

मुझे /usr/local/var/run/nginx/ को हटा देना था और nginx इसे फिर से बनाना चाहिए।

$ sudo rm -rf /usr/local/var/run/nginx/
$ sudo nginx -s stop
$ sudo mkdir /usr/local/var/run/nginx/
$ sudo chown nobody:nobody /usr/local/var/run/nginx/
$ sudo nginx

मेरे मामले में यह एचटीएमएल का मुद्दा था। समस्या के कारण जेसन प्रतिक्रिया में '\ n' था। तो मैंने इसे हटा दिया।


मेरे मामले में यह सर्वर पर mysqlnd_ms php एक्सटेंशन के लिए कॉन्फ़िगर किया गया था। मजेदार बात यह है कि यह छोटी अवधि के साथ अनुरोध पर ठीक काम कर रहा था। सर्वर त्रुटि लॉग में एक चेतावनी थी, इसलिए हमने इसे ठीक कर दिया है।


यह कई कारणों और समाधानों के साथ एक आम समस्या की तरह प्रतीत होता है, इसलिए मैं यहां अपना उत्तर किसी भी व्यक्ति के लिए डालने जा रहा हूं जिसके लिए इसकी आवश्यकता हो सकती है।

मुझे क्रोम, ओएसएक्स, php70, httpd24 संयोजन पर net::ERR_INCOMPLETE_CHUNKED_ENCODING प्राप्त हो रहा था, लेकिन उसी कोड को उत्पादन सर्वर पर ठीक चला गया।

मैंने शुरुआत में नियमित लॉग की सराहना की लेकिन कुछ भी वास्तव में दिखाई नहीं दिया। एक त्वरित ls -later दिखाया गया था /var/log में नवीनतम स्पर्श फ़ाइल, और पूंछ जिसने मुझे दिया था

Saved crash report for httpd[99969] version 2.4.16 (805) 
to /Library/Logs/DiagnosticReports/httpd.crash

के भीतर निहित:

Process:               httpd [99974]
Path:                  /usr/sbin/httpd
Identifier:            httpd
Version:               2.4.16 (805)
Code Type:             X86-64 (Native)
Parent Process:        httpd [99245]
Responsible:           httpd [99974]
User ID:               70

PlugIn Path:             /usr/local/opt/php70-mongodb/mongodb.so
PlugIn Identifier:       mongodb.so

एक brew uninstall php70-mongodb और एक httpd -k restart में httpd -k restart और सब कुछ चिकनी नौकायन था।


यह क्रोम समस्या ज्ञात है। क्रोम और क्रोमियम बग ट्रैकर्स के अनुसार इसके लिए कोई सार्वभौमिक समाधान नहीं है। यह समस्या सर्वर प्रकार और संस्करण से संबंधित नहीं है, यह क्रोम में सही है।

Content-Encoding हेडर को identity लिए सेट करने से मुझे यह समस्या हल हो गई।

developer.mozilla.org

पहचान | पहचान फ़ंक्शन को इंगित करता है (यानी कोई संपीड़न नहीं, न ही संशोधन)।

तो, मैं सुझाव दे सकता हूं कि कुछ मामलों में क्रोम सही ढंग से gzip संपीड़न नहीं कर सकता है।


यहां समस्या मेरा अवास्ट एवी था। जैसे ही मैंने इसे अक्षम कर दिया, समस्या चली गई।

लेकिन, मैं वास्तव में इस व्यवहार के कारण को समझना चाहता हूं।


हमम सिर्फ एक ही मुद्दे पर ठोकर खाई लेकिन पीछे के कारणों से ...

मैं लैरवेल मिक्स के साथ एक वेनिला PHP प्रोजेक्ट पर लैरवेल वैलेट का उपयोग कर रहा हूं। जब मैंने क्रोम में साइट खोला, तो यह net::ERR_INCOMPLETE_CHUNKED_ENCODING त्रुटियों को फेंक रहा था। (यदि मेरे पास HTTPS प्रोटोकॉल पर साइट लोड की गई थी, तो त्रुटि net::ERR_SPDY_PROTOCOL_ERROR बदल net::ERR_SPDY_PROTOCOL_ERROR ।)

मैंने php.ini की जांच की और opcache सक्षम नहीं था। मैंने पाया कि मेरे मामले में समस्या संपत्ति फ़ाइलों को संस्करणित करने से संबंधित थी - किसी कारण से, यह संपत्ति के यूआरएल में एक क्वेरी स्ट्रिंग की तरह प्रतीत नहीं होता था (ठीक है, विचित्र रूप से पर्याप्त है, केवल एक विशेष रूप से?)।

मैंने स्थानीय वातावरण के लिए mix.version() को हटा दिया है, और साइट HTTP और HTTPS प्रोटोकॉल दोनों पर मेरे क्रोम में बस ठीक है।





chunked