เครื่องมือ dev ของ Chrome ไม่สามารถแสดงการตอบสนองแม้เนื้อหาที่ส่งคืนจะมีส่วนหัว Content-Type: text / html; charset = UTF-8


158

เหตุใดเครื่องมือสำหรับนักพัฒนา Chrome ของฉันจึงแสดง "ไม่สามารถแสดงข้อมูลการตอบกลับ" ในการตอบสนองเมื่อเนื้อหาที่ส่งคืนเป็นประเภท text / html

ทางเลือกอื่นในการดูการตอบกลับในเครื่องมือสำหรับนักพัฒนาคืออะไร


ฉันพบว่า Microsoft Edge Dev (อิงตาม Chromium) ไม่ให้ข้อผิดพลาดนี้แก่ฉัน
สำหรับชื่อ

คุณลองตรวจสอบใน Firefox หรือยัง?
Rajendra kumar Vankadari

คำตอบ:


220

ฉันคิดว่าสิ่งนี้จะเกิดขึ้นก็ต่อเมื่อคุณได้ตรวจสอบ "เก็บบันทึก" และคุณพยายามดูข้อมูลการตอบกลับของคำขอก่อนหน้านี้หลังจากที่คุณออกไปแล้ว

ตัวอย่างเช่นฉันดูการตอบสนองต่อการโหลดคำถาม Stack Overflow นี้ คุณสามารถดูได้

ข้อมูลการตอบกลับ

ครั้งที่สองฉันโหลดหน้านี้ซ้ำ แต่ไม่ได้ดูที่ส่วนหัวหรือคำตอบ ฉันไปที่เว็บไซต์อื่น ตอนนี้เมื่อฉันดูการตอบกลับจะแสดงข้อความ 'ไม่สามารถโหลดข้อมูลตอบกลับ'

ไม่มีข้อมูลการตอบสนอง

นี่เป็นปัญหาที่ทราบมาระยะหนึ่งแล้วและเป็นที่ถกเถียงกันมาก อย่างไรก็ตามมีวิธีแก้ปัญหาที่คุณหยุดชั่วคราวonunloadเพื่อให้คุณสามารถดูการตอบสนองก่อนที่จะออกไปและข้อมูลดังกล่าวจะไม่สูญเสียข้อมูลเมื่อออกไป

window.onunload = function() { debugger; }

214
การไม่เห็นข้อมูลการตอบสนองเกือบทั้งหมดทำให้จุด "สงวนบันทึก" เสียไป!
Amalgovinus

1
วิธีแก้ปัญหา window.onunload ของคุณใช้งานได้ดีขอบคุณ!
Shane N

27
ไม่ใน Chrome 61 อาจเกิดขึ้นได้อย่างแน่นอนหากไม่ได้เลือก"เก็บบันทึก" และไม่ต้องออกจากหน้า
หรือ Mapper

2
ยังคงพบปัญหานี้กับ chrome 73.0 การonunloadแก้ไขไม่ได้ผลสำหรับฉันด้วยเหตุผลบางประการ
Onza

2
คุณไม่สามารถแสดงความคิดเห็นในเธรดที่เชื่อมโยงเว้นแต่คุณจะได้รับอนุญาตจากบรรณาธิการฉันพยายามแล้ว และการเพิ่มดีบักเกอร์ลงในซอร์สนั้นไม่ต้องไปไหนเพราะนี่คือโค้ดระดับการใช้งานจริงโค้ดดีบักไม่ใช่ตัวเลือก และ Firefox สามารถเก็บรักษาไว้ได้ดีแม้กระทั่งบันทึกไม่กี่ชั่วโมงดังนั้นปัญหาโครเมียมคืออะไร? ใช่มันอาจกินหน่วยความจำ แต่ถ้าคุณเปิด devtools แล้วคุณอาจสนใจข้อมูลมากกว่าประสิทธิภาพ และหากยังคงมีปัญหาอยู่ให้เพิ่มการสลับ
David Mårtensson

55

สำหรับผู้ที่ได้รับข้อผิดพลาดขณะขอข้อมูล JSON:

หากคุณกำลังขอข้อมูล JSON JSON อาจมีขนาดใหญ่เกินไปและเป็นสาเหตุของข้อผิดพลาด

วิธีแก้ปัญหาของฉันคือคัดลอกลิงก์คำขอไปยังแท็บใหม่ ( getขอจากเบราว์เซอร์) คัดลอกข้อมูลไปยังโปรแกรมดู JSON ออนไลน์ซึ่งคุณมีการแยกวิเคราะห์อัตโนมัติและทำงานที่นั่น


19
ไม่ใช่วิธีแก้ปัญหาจริงๆ ฉันทำงานกับการพิสูจน์ตัวตนและอื่น ๆ ท้าทายวัตถุประสงค์ของเครื่องมือ dev ใครบางคนน่าจะสร้างรายงานข้อผิดพลาดไว้ที่ไหนสักแห่ง คำตอบที่ถูกต้องที่นี่
phil294

2
ขีด จำกัด นี้สามารถกำหนดได้หรือไม่?
Willem Hengeveld

ในกรณีของฉันมันเกิดขึ้นที่ 23MB ซึ่งเป็นการตอบสนอง JSON ขนาดใหญ่ที่โง่ .... ฉันเปิดปัญหาเพื่อให้ข้อความแสดงข้อผิดพลาดมีคำอธิบายมากขึ้น
boatcoder

ฉันพบปัญหาสำหรับ JSON ขนาด 6MB :(
Lee Gunn

นอกจากนี้ยังกดปุ่มนี้ในการตอบสนอง JSON arond 6mb แบบไม่บีบอัด
miki noidea

48

ตามที่ Gideon อธิบายไว้นี่เป็นปัญหาที่ทราบแล้วของ Chrome ซึ่งเปิดให้บริการมานานกว่า 5 ปีโดยไม่มีความสนใจที่จะแก้ไข

น่าเสียดายที่ในกรณีของฉันwindow.onunload = function() { debugger; }วิธีแก้ปัญหาไม่ได้ผลเช่นกัน วิธีแก้ปัญหาที่ดีที่สุดที่ฉันพบคือใช้ Firefox ซึ่งจะแสดงข้อมูลการตอบสนองแม้หลังจากการนำทาง Firefox devtools ยังมีคุณสมบัติที่ดีมากมายที่ขาดหายไปใน Chrome เช่นไวยากรณ์ที่เน้นข้อมูลการตอบสนองหากเป็น html และจะแยกวิเคราะห์โดยอัตโนมัติหากเป็น JSON


5
ว้าวสิ่งที่ดี จำเป็นต้องแก้ไขข้อผิดพลาดที่เกิดขึ้นกับ Chrome เท่านั้นไม่ใช่ Firefox ดังนั้นยังไม่มีตัวเลือกสำหรับฉัน อย่างจริงจังทำไมทุกคนถึงบอกว่าเครื่องมือเว็บ Chrome ดีกว่า Firefox มาก? ดูเหมือนว่าพวกเขาไม่ได้ลอง Firefox มาหลายปีแล้ว
mozzbozz

13
Chrome ยังไม่มีตัวเลือกคำขอ "แก้ไขและส่งใหม่" ที่สะดวกของ Firefox
พลวง

1
ใช่ ... นอกจากนี้ยังใช้ FF เพื่อทำงานให้ลุล่วง ... เรากำลังมีชีวิตอยู่ในช่วงเวลาที่ทรยศ!
nmirceac

@Antimony chrome มีตัวเลือก "ส่งใหม่" มาระยะหนึ่งแล้ว แต่ในหนึ่งในรุ่นล่าสุดพวกเขาได้ลบไปแล้ว ... โชคดีที่มีคนทำได้อย่างรวดเร็วfetch(...copied link...)ในคอนโซลและสังเกตการตอบสนองในแท็บเครือข่าย
Ivan Hušnjak

ยังคงได้รับสิ่งนี้แม้ตอนนี้ สำหรับการร้องไห้ออกมาดัง ๆ ฉันอยากให้พวกเขาแก้ไขสิ่งที่พวกเขามีอยู่แล้วแทนที่จะแนะนำคุณสมบัติที่ไร้จุดหมายเช่นการประเมินอย่างกระตือรือร้นในคอนโซลและละเลยคุณภาพของเครื่องมือสำหรับนักพัฒนาขั้นพื้นฐาน
thephpdev

22

ตามที่ Gideon อธิบายไว้นี่เป็นปัญหาที่ทราบ
เพื่อใช้window.onunload = function() { debugger; }แทน.
แต่คุณสามารถเพิ่มเบรกพอยต์ในแท็บต้นทางเพื่อแก้ปัญหาของคุณได้ แบบนี้: ป้อนคำอธิบายภาพที่นี่


ข้อดีของแท็บแหล่งที่มาwindow.onunload = function() { debugger; }คืออะไร?
Mihail Malostanidis

1
คุณไม่จำเป็นต้องเขียนโค้ดสำหรับดีบักเกอร์และคุณสามารถดีบักในสภาพแวดล้อมที่สูงขึ้นซึ่งคุณอาจจะกระโดดไปมาระหว่างเพจและไม่รักษาหน้าต่างเดิมไว้
Parijat Kalia

window.onunload = function() { debugger; }ไม่ได้ผลสำหรับฉันสิ่งนี้ได้ ขอบคุณ!
aexl

13

"ไม่สามารถแสดงข้อมูลการตอบกลับ" ได้เช่นกันหากคุณกำลังดำเนินการตามคำขอข้ามโดเมนและโฮสต์ระยะไกลไม่ได้จัดการส่วนหัว CORS อย่างถูกต้อง ตรวจสอบข้อผิดพลาด js console ของคุณ


3
โครเมี่ยมยังคงเสียเนื่องจากไม่แสดงการตอบสนอง (ในรูปแบบใด ๆ ) - FF ทำงานให้ฉัน
nmirceac

คุณพูดถูก! แต่นี่คือเหตุผลที่ฉันต้องการคำตอบเพื่อทำความเข้าใจว่าเหตุใดคำขอของฉันจึงล้มเหลว ทุกอย่างทำงานได้ดีเมื่อใช้ curl แต่ chrome ยังคงล้มเหลวด้วย "การตอบสนองต่อคำขอ preflight ไม่ผ่านการตรวจสอบการควบคุมการเข้าถึง: ไม่มีส่วนหัว" Access-Control-Allow-Origin "ในทรัพยากรที่ร้องขอ"
AHA

6

ถ้าคุณทำคำขอ AJAX กับfetchการตอบสนองที่ไม่ได้แสดงให้เห็นเว้นแต่จะอ่านด้วย.text(), .json()ฯลฯ

หากคุณเพียงแค่ทำ:

 r = fetch("/some-path");

การตอบสนองจะไม่แสดงในเครื่องมือ dev
จะปรากฏขึ้นหลังจากที่คุณเรียกใช้:

r.then(r => r.text())

2

สำหรับครั้งหนึ่งที่ได้รับข้อผิดพลาดนี้ในขณะที่ขอข้อมูล JSON ขนาดใหญ่ดังที่กล่าวไว้โดย Blauhirn ไม่ใช่วิธีแก้ปัญหาเพียงแค่เปิดคำขอในแท็บใหม่หากคุณใช้ส่วนหัวการตรวจสอบสิทธิ์และสิ่งที่ชอบ

Forturnatly chrome มีตัวเลือกอื่น ๆ เช่น Copy -> Copy as curl การเรียกใช้การเรียกนี้จาก commandoline ผ่าน cURL จะเป็นการจำลองการโทรเดิม

ฉันเพิ่ม> ~/result.jsonในส่วนสุดท้ายของคอมมานโดเพื่อบันทึกผลลัพธ์ลงในไฟล์ มิฉะนั้นจะถูกส่งออกไปที่คอนโซล


1
แบบจำลองที่แน่นอนจะไม่ถูกใช้หากสถานะเซิร์ฟเวอร์ที่ให้การตอบกลับมีการเปลี่ยนแปลง สำหรับฉันแล้วนั่นต้องรอประมาณ 40 นาทีเพื่อให้เหตุการณ์เกิดขึ้นและเหตุการณ์นั้นทำให้เกิดหน้าใหม่ซึ่งจะทำให้การใช้งานทั้งหมดไม่สมบูรณ์ ควรเป็นตัวเลือกที่สามารถสลับได้ ในกรณีนี้ไม่มีตัวเลือกการโหวตหรือแสดงความคิดเห็นสำหรับผู้เยี่ยมชมทั่วไปของปัญหาที่ระบุไว้ในความคิดเห็นก่อนหน้านี้เว้นแต่คุณจะเป็นส่วนหนึ่งของทีมของพวกเขา: /
David Mårtensson

0

บั๊กยังคงทำงานอยู่ สิ่งนี้เกิดขึ้นเมื่อ JS กลายเป็นตัวเริ่มต้นสำหรับเพจใหม่ (200) หรือเปลี่ยนเส้นทาง (301/302) 1 วิธีที่เป็นไปได้ในการแก้ไข - ปิดการใช้งาน JavaScript ตามคำขอ เช่นในการเชิดหุ่นคุณสามารถใช้: page.setJavaScriptEnabled (false) ในขณะที่สกัดกั้นคำขอ (page.on ('request'))


0

สำหรับผู้ที่มาที่นี่จาก Google และสำหรับผู้ที่คำตอบก่อนหน้านี้ไม่สามารถไขปริศนาได้ ...

หากคุณใช้ XHR เพื่อโทรหาเซิร์ฟเวอร์ แต่ไม่ส่งคืนการตอบกลับข้อผิดพลาดนี้จะเกิดขึ้น

ตัวอย่าง(จาก Nodejs / React แต่อาจเป็น js / php เท่า ๆ กัน) :

App.tsx

const handleClickEvent = () => {
    fetch('/routeInAppjs?someVar=someValue&nutherVar=summat_else', {
        method: 'GET',
        mode: 'same-origin',
        credentials: 'include',
        headers: {
          'content-type': 'application/json',
          dataType: 'json',
        },
    }).then((response) => {
        console.log(response)
    });
}

App.js

app.route('/getAllPublicDatasheets').get(async function (req, res) {
    const { someVar, nutherVar } = req.query;
    console.log('Ending here without a return...')
});

Console.log จะรายงานที่นี่:

Failed to show response data

ในการแก้ไขให้เพิ่มการตอบกลับที่ด้านล่างของเส้นทางของคุณ (ฝั่งเซิร์ฟเวอร์):

res.json('Adding this below the console.log in App.js route will solve it.');
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.