สถานะ = ยกเลิกสำหรับทรัพยากรหมายถึงอะไรในเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ของ Chrome


402

อะไรจะทำให้หน้าถูกยกเลิก? ฉันมีภาพหน้าจอของเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ Chrome

ทรัพยากรที่ถูกยกเลิก

สิ่งนี้เกิดขึ้นบ่อยครั้ง แต่ไม่ใช่ทุกครั้ง ดูเหมือนว่าเมื่อทรัพยากรอื่น ๆ ถูกแคชการรีเฟรชหน้าจะโหลด LeftPane.aspx และสิ่งที่แปลกจริงๆนี้เกิดขึ้นเฉพาะใน Google Chrome ไม่ใช่ Internet Explorer 8 แนวคิดใดที่ Chrome จะยกเลิกการร้องขอ


13
คุณอาจได้รับรายละเอียดเพิ่มเติมจากการติดตามnet-internals ฉันมีปัญหาที่คล้ายกันและพบว่าในกรณีของฉันที่ถูกยกเลิกอยู่net::ERR_ABORTEDภายใต้การคุ้มครอง หากเป็นกรณีนี้โพสต์นี้จะอธิบายว่า "net :: ERR_ABORTED มีวัตถุประสงค์เพื่อสร้างขึ้นเฉพาะเมื่อการกระทำของผู้ใช้ทำให้การโหลดถูกขัดจังหวะซึ่งอาจเกิดขึ้นเมื่อการนำทางใหม่ขัดจังหวะการนำทางที่มีอยู่หรือเมื่อผู้ใช้คลิกที่ STOP ปุ่ม."
John McCarthy

ขอบคุณ ในกรณีของฉันมันไม่ใช่ผู้ใช้เพราะฉันเป็นผู้ใช้ หน้ามีหลายเฟรม (เช่นกัน) บางทีเฟรม src เปลี่ยนไป? เป็นเรื่องแปลกที่ฉันไม่เคยเห็นมันเกิดขึ้นใน IE ฉันจะดูเป็น net-internals
สไตล์

@ nondescript1 ฉันได้จับภาพในขณะที่ทำซ้ำข้อผิดพลาดและทิ้งไปยังไฟล์ ตอนนี้ฉันมีไฟล์ json 18,000 บรรทัด ฉันกำลังมองหาอะไร
สไตล์

3
ฉันไม่รู้จริงๆ พบคำถามของคุณจริง ๆ แล้วเมื่อฉันค้นหาข้อมูลเพิ่มเติมเกี่ยวกับสถานะ = ยกเลิกด้วยตัวเองซึ่งเป็นสาเหตุที่ฉันเพิ่มความคิดเห็นเท่านั้นไม่ใช่คำตอบ;) ฉันไม่มีเหตุผลที่จะคิดว่ามันเกี่ยวข้องกับการแคช ฉันสงสัยว่าการนำทางอื่นจะเริ่มต้นใครบางคนในหน้านี้ เมื่อฉันเห็นสิ่งนี้ฉันพยายามเริ่มต้นการดาวน์โหลดด้วย window.open () ที่ทำให้การร้องขอเซิร์ฟเวอร์อื่นถูกยกเลิก ในกรณีของฉัน Firefox ไม่มีปัญหานี้ แต่ Chrome ทำ
John McCarthy

1
สาเหตุที่เป็นไปได้อย่างหนึ่งของ "(ยกเลิก)" ในคอลัมน์สถานะ - แม้ว่าจะไม่ใช่สาเหตุที่เป็นไปได้เท่านั้น - คือ URL ตามที่ระบุได้ส่งคืนข้อผิดพลาด 404 หรือข้อผิดพลาดอื่น ๆ บังคับให้รีเฟรช URL ในแท็บอื่นสองสามครั้งเพื่อให้แน่ใจว่าโหลดอย่างสม่ำเสมอ
rakslice

คำตอบ:


592

เราต่อสู้กับปัญหาที่คล้ายกันซึ่ง Chrome ได้ยกเลิกการร้องขอให้โหลดสิ่งต่าง ๆ ภายในเฟรมหรือ iframes แต่มีเพียงช่วง ๆ ๆ เท่านั้นและมันก็ขึ้นอยู่กับคอมพิวเตอร์และ / หรือความเร็วของการเชื่อมต่ออินเทอร์เน็ต

ข้อมูลนี้ล้าสมัยไม่กี่เดือน แต่ฉันสร้าง Chromium ตั้งแต่เริ่มต้นขุดผ่านแหล่งข้อมูลเพื่อค้นหาสถานที่ทั้งหมดที่คำขอสามารถถูกยกเลิกได้และตบจุดพักเพื่อให้ดีบั๊กทั้งหมด จากหน่วยความจำสถานที่เดียวที่ Chrome จะยกเลิกการร้องขอ:

  • องค์ประกอบ DOM ที่ทำให้คำขอถูกลบ (เช่นกำลังโหลด IMG แต่ก่อนที่จะโหลดเกิดขึ้นคุณลบโหนด IMG)
  • คุณทำสิ่งที่ทำให้การโหลดข้อมูลไม่จำเป็น (เช่นคุณเริ่มโหลด iframe จากนั้นเปลี่ยน src หรือเขียนทับเนื้อหา)
  • มีคำขอจำนวนมากที่ไปที่เซิร์ฟเวอร์เดียวกันและปัญหาเครือข่ายในคำขอก่อนหน้านี้แสดงให้เห็นว่าคำขอที่ตามมาไม่ทำงาน (ข้อผิดพลาดการค้นหา DNS การร้องขอก่อนหน้า (เดียวกัน) ส่งผลเช่นรหัสข้อผิดพลาด HTTP 400 ฯลฯ )

ในกรณีของเราในที่สุดเราก็สืบค้นมันลงไปที่เฟรมหนึ่งซึ่งพยายามต่อท้าย HTML กับเฟรมอื่นซึ่งบางครั้งก็เกิดขึ้นก่อนที่เฟรมปลายทางจะโหลด เมื่อคุณสัมผัสเนื้อหาของ iframe แล้วมันจะไม่สามารถโหลดทรัพยากรอีกต่อไปได้ (จะรู้ได้อย่างไรว่าจะใส่ไว้ที่ใด) เพื่อยกเลิกการร้องขอ


2
ข้อมูลมากขอบคุณ ฉันมีเวลายากที่จะทำซ้ำข้อผิดพลาดนี้เพราะเมื่อสิ่งต่าง ๆ ได้รับการแคชก็จะไม่เกิดขึ้น หากตั้งเบรกพอยต์ในจาวาสคริปต์ของฉันมันจะไม่เกิดขึ้น สัญลักษณ์แสดงหัวข้อแรกของคุณอาจไม่ใช่ปัญหาเพราะฉันไม่เห็นองค์ประกอบที่ถูกลบ ฉันรู้ว่ามันไม่ได้เป็น bullet 3. คุณหมายถึงอะไร "เมื่อคุณสัมผัสเนื้อหาของ iframe มันจะไม่สามารถโหลดทรัพยากรลงในนั้นได้อีก" คุณยกตัวอย่างได้ไหม
สไตล์

1
น่าสนใจ ดังนั้นฉันจึงต้องค้นหาทั้งหมดdocument.writeของเฟรมนั้นและตรวจสอบให้แน่ใจว่าพวกเขาเขียนเมื่อโหลดเฟรมเท่านั้น ฉันจะทำเครื่องหมายว่าเป็นคำตอบที่ถูกต้องเมื่อคุณตอบความหมายของสถานะนั้น
สไตล์

3
@styfle ใช่ แต่มันอาจเป็นอย่างอื่นที่ไม่ใช่ document.write ก็ได้เช่นกัน อะไรก็ตามที่พยายามเขียนลงในเฟรมเช่นภาคผนวกเด็กหรือที่คล้ายกันอาจทำให้เกิดสิ่งนี้ คุณอาจต้องการสร้างตัวจัดการ onLoad ในแต่ละเฟรมที่เขียนtrueไปยังตัวแปรบางตัวจากนั้นเฟรมอื่น ๆ จะมองหามันก่อนที่จะแตะสิ่งใด ๆ
whamma

14
ฉันมีปัญหาเช่นนี้ด้วย สิ่งหนึ่งที่ฉันได้พบที่จะทริกเกอร์สิ่งนี้อย่างสม่ำเสมอหากการตอบกลับ AJAX มีรหัสสถานะ 301/302 และ URL การเปลี่ยนเส้นทางอยู่ในโดเมนอื่น นี่คือการสืบพันธุ์ของปัญหาที่สอดคล้องกันสำหรับฉัน
eb80

1
สำหรับฉันมันคือ iframe ผนวกเข้ากับร่างกายจากนั้นนำออกจากร่างกายทันที ฉันใส่ตัวแบ่งบรรทัดและปัญหาไม่ได้อยู่ที่นั่น ดังนั้นให้หมดเวลา (15 ms) แล้วเอาชนะมัน @ ธรรมมันเป็นแรงบันดาลใจในแบบที่คุณจัดการกับปัญหา ขอบคุณสำหรับรายละเอียดในเชิงลึกที่ยอดเยี่ยม :-)
muhammed basil

53

สถานะ = ยกเลิกอาจเกิดขึ้นกับคำขอ ajax ในเหตุการณ์ JavaScript:

<script>
  $("#call_ajax").on("click", function(event){
     $.ajax({
        ...    
     });
  });
</script>

<button id="call_ajax">call</button> 

เหตุการณ์ส่งคำขอได้สำเร็จ แต่ถูกยกเลิกแล้ว (แต่ดำเนินการโดยเซิร์ฟเวอร์) เหตุผลก็คือองค์ประกอบส่งแบบฟอร์มในกิจกรรมการคลิกไม่ว่าคุณจะทำการร้องขอ ajax ในกิจกรรมการคลิกเดียวกัน

เพื่อป้องกันไม่ให้คำขอถูกยกเลิก JavaScript event.preventDefault (); จะต้องมีการเรียก:

<script>
  $("#call_ajax").on("click", function(event){
     event.preventDefault();
     $.ajax({
        ...    
     });
  });
</script>

3
สิ่งนี้ช่วยฉันได้คือปัญหาในกรณีของฉันที่ฉันใช้ng-clickปุ่มเชิงมุมบนปุ่มtype="submit"แล้วทำเครือข่ายในฟังก์ชั่นที่เรียกว่า Chrome ยกเลิกคำขอดังกล่าวต่อไป ...
Robin

1
น่าเสียดายที่มันไม่ทำงานสำหรับฉัน มีคำใบ้อื่น ๆ อีกไหม?
Krzysztof Madej

Vaov ช่วยฉันด้วย! สำหรับเหตุการณ์ ng-click เชิงมุมฉันมีคำขอ $ http ซ้อนกันและคำขอที่สองถูกยกเลิก หลังจากตั้งค่าป้องกันบรรทัดเริ่มต้นมันเริ่มทำงานอีกครั้งขอบคุณ
Bahadir Tasdemir

ขอบคุณสำหรับสิ่งนี้. ฉันรู้ว่ามันไม่ใช่ CORS หรือปัญหา DOM บางที @whamma สามารถปรับปรุงคำตอบของพวกเขาที่จะรวมนี้เป็นสาเหตุที่เป็นไปได้เพื่อความสมบูรณ์ :)
glidester

สวัสดีท่าน !! ท่านเป็นอัจฉริยะอย่างแท้จริง !! ฉันได้รับความรอด !!
Dilnoor Singh เมื่อ

25

หมายเหตุ: ให้แน่ใจว่าคุณไม่ได้มีองค์ประกอบของแบบฟอร์มการวางรูปภาพใด

ฉันมีปัญหาที่คล้ายกันซึ่งปุ่มของฉันที่มี onclick = {} ถูกห่อในองค์ประกอบของฟอร์ม เมื่อคลิกที่ปุ่มจะมีการส่งแบบฟอร์มและสิ่งนั้นก็ยุ่งทั้งหมด ...

คำตอบนี้อาจจะไม่ถูกอ่านโดยทุกคน แต่ฉันคิดว่าทำไมไม่เขียนมัน :)


นี่คือสาเหตุที่แท้จริงสำหรับฉัน - ปุ่มหนึ่งเรียกทำงาน POST สองครั้ง ฉันไม่ต้องการย้ายปุ่มออกจากองค์ประกอบของฟอร์มเนื่องจากสิ่ง CSS ดังนั้นนี่คือวิธีแก้ไข: stackoverflow.com/questions/932653//
Nikolai Koudelia

ปัญหาเดียวกัน เพื่อชี้แจงฉันมีปุ่มอยู่ในรูปแบบที่มีประเภทของการส่ง แต่มี onclick ที่ทำแบบฟอร์มส่ง jquery ส่งอาแจ็กซ์ มันทำงานใน FF แต่ล้มเหลวใน chome และ IE และผลักฉันถั่วจนกว่าฉันจะพบมัน
ChrisThompson

วิธีนี้ช่วยแก้ไขปัญหาที่เกิดขึ้นกับฉันในแอป Vue.js ซึ่ง@clickเหตุการณ์ถูกผูกไว้กับ<button>องค์ประกอบภายในตัวห่อหุ้มฟอร์ม หลีกเลี่ยงการทำเช่นนี้ยกเว้นว่าคุณกำลังใช้@submit.preventตัวแก้ไขเหตุการณ์ของ Vue
Paul Wenzel

นี่เป็นกรณีสำหรับฉัน เมื่อเพิ่มtype="button"แท็กปุ่มของฉันจะไม่ส่งแบบฟอร์มและหลีกเลี่ยงเหตุการณ์ที่ถูกยกเลิก
Brandon Medenwald

12

สิ่งอื่นที่ควรระวังก็คือส่วนขยาย AdBlock หรือส่วนขยายโดยทั่วไป

แต่ผู้คนจำนวนมากมี AdBlock

หากต้องการแยกแยะส่วนขยายให้เปิดแท็บใหม่ในโหมดไม่ระบุตัวตนตรวจสอบให้แน่ใจว่า "ปิดการอนุญาตในโหมดไม่ระบุตัวตน" สำหรับส่วนขยายที่คุณต้องการทดสอบ


สิ่งที่เกิดขึ้น เปิดปลั๊กอิน noscript และ iFrame ก็ไม่ได้โหลดอีกต่อไป
Margus Pala

สำหรับฉันมันเป็นปลั๊กอิน Hola หลังจากปิดใช้งานคำขอจะไม่ถูกยกเลิกอีกต่อไป
เลนินราชา Rajasekaran

1
ในกรณีของฉันมันเป็น "ตัวแก้ไขข้อผิดพลาด JavaScript" ส่วนขยายของโครเมี่ยม
Alex

ฉันลองดูทุกอย่างและยังไม่มีโชคกับ Angular 8 ปิดใช้งานส่วนขยายทั้งหมดและยังอยู่ในเครือข่าย 3G ที่ช้าการโทรก่อนหน้านี้จะถูกยกเลิก :(
born2net

10

คุณอาจต้องการตรวจสอบแท็กส่วนหัว "X-Frame-Options" หากตั้งเพื่อ SAMEORIGIN หรือปฏิเสธแล้วแทรก iFrame จะถูกยกเลิกโดย Chrome (และเบราว์เซอร์อื่น ๆ ) ตามสเป็ค

นอกจากนี้โปรดทราบว่าบางเบราว์เซอร์รองรับการตั้งค่า ALLOW-FROM แต่ Chrome ไม่รองรับ

ในการแก้ไขปัญหานี้คุณจะต้องลบแท็กส่วนหัว "X-Frame-Options" นี่อาจทำให้คุณเปิดการโจมตีด้วยการคลิกผ่านดังนั้นคุณจะต้องตัดสินใจว่าความเสี่ยงคืออะไรและจะลดความเสี่ยงเหล่านั้นได้อย่างไร


นี่เป็นปัญหาของฉันอย่างแน่นอน กระทู้นี้มีคำตอบที่ดีเกี่ยวกับวิธีแก้ไข: stackoverflow.com/questions/6666423/…
ToniTornado

8

ในกรณีของฉันฉันพบว่าเป็นการตั้งค่าหมดเวลาทั่วโลก jquery ปลั๊กอิน jquery ตั้งค่าการหมดเวลาทั่วโลกเป็น 500ms ดังนั้นเมื่อคำขอเกิน 500 มิลลิวินาที Chrome จะยกเลิกการร้องขอ


พบปัญหาเดียวกัน ในกรณีของฉันมันคือการพัฒนา WordPress / WooCommerce ในท้องถิ่นกับเซิร์ฟเวอร์แขก VirtualBox และคำขอ AJAX ของ WooCommerce บางรายการมีการหมดเวลา AJAX ที่กำหนดไว้ล่วงหน้าที่ 5,000 มิลลิวินาที หากมีคนพบปัญหาเดียวกันการหมดเวลานี้กำหนดไว้ในincludes/class-wc-frontend-scripts.phpไฟล์
Ivan Shatsky

7

นี่คือสิ่งที่เกิดขึ้นกับฉัน: เซิร์ฟเวอร์ส่งคืนส่วนหัว "ตำแหน่ง" ที่ไม่ถูกต้องสำหรับการเปลี่ยนเส้นทาง 302 แน่นอนว่า Chrome ล้มเหลว ฉันเปิดหน้าเว็บใน Firefox และค้นพบปัญหาทันที ยินดีที่ได้มีเครื่องมือหลายอย่าง :)


แม้ว่าจะชัดเจนมากว่าด้วยเหตุผล แต่ยังคงเป็นจริงคำตอบที่มีประโยชน์มาก ฉันกำลังแก้ไขโค้ด coffeescript เก่าและลืมไปว่าราคาเพียงคำเดียวไม่ได้ทำการ#{}แก้ไขดังนั้น URL ที่ได้จึงไม่ถูกต้อง แต่ Chrome ไม่ได้บอกอะไรฉันเลย
kumarharsh

4

สถานที่อื่นที่เราพบ(canceled)สถานะอยู่ในการกำหนดค่าใบรับรอง TLS เฉพาะ หากไซต์เช่นการhttps://www.example.comกำหนดค่าผิดพลาดซึ่งใบรับรองไม่รวมwww.แต่ถูกต้องสำหรับhttps://example.comChrome จะยกเลิกการร้องขอนี้และจะเปลี่ยนเส้นทางไปยังไซต์หลังโดยอัตโนมัติ นี่ไม่ใช่กรณีของ Firefox

ตัวอย่างที่ถูกต้องในปัจจุบัน: https://www.pthree.org/


คุณสามารถเปลี่ยนเส้นทางจากโดเมนที่ไม่ใช่ใบรับรองไปเป็นใบรับรองได้หรือไม่ จากเปล่าถึง www? หรือคุณเห็นข้อผิดพลาดที่ยกเลิกหรือใบรับรองเสมอ
Konstantin Vahrushev

3

คำขอที่ถูกยกเลิกเกิดขึ้นกับฉันเมื่อเปลี่ยนเส้นทางระหว่างหน้าเว็บที่ปลอดภัยและไม่ปลอดภัยในโดเมนที่แยกต่างหากภายใน iframe คำขอที่เปลี่ยนเส้นทางแสดงในเครื่องมือ dev ว่าเป็นคำขอ "ยกเลิก"

ฉันมีเพจที่มี iframe ซึ่งมีฟอร์มที่โฮสต์โดยเกตเวย์การชำระเงินของฉัน เมื่อมีการส่งแบบฟอร์มใน iframe เกตเวย์การชำระเงินจะเปลี่ยนเส้นทางกลับไปยัง URL บนเซิร์ฟเวอร์ของฉัน การเปลี่ยนเส้นทางเมื่อเร็ว ๆ นี้หยุดทำงานและลงเอยด้วยคำขอ "ยกเลิก" แทน

ดูเหมือนว่า Chrome (ฉันใช้ Windows 7 Chrome 30.0.1599.101) ไม่ได้รับอนุญาตให้เปลี่ยนเส้นทางภายใน iframe เพื่อไปยังหน้าเว็บที่ไม่ปลอดภัยในโดเมนแยกต่างหาก เพื่อแก้ไขฉันเพิ่งตรวจสอบว่าคำขอเปลี่ยนเส้นทางใด ๆ ใน iframe ถูกส่งไปยัง URL ที่ปลอดภัยเสมอ

เมื่อฉันสร้างหน้าทดสอบที่ง่ายขึ้นมีเพียง iframe มีคำเตือนในคอนโซล (ซึ่งฉันพลาดไปก่อนหน้านี้หรืออาจไม่ปรากฏขึ้นมา):

[Blocked] The page at https://mydomain.com/Payment/EnterDetails ran insecure content from http://mydomain.com/Payment/Success

การเปลี่ยนเส้นทางกลายเป็นการร้องขอที่ถูกยกเลิกใน Chrome บนพีซี, Mac และ Android ฉันไม่ทราบว่าเป็นเฉพาะการตั้งค่าเว็บไซต์ของฉัน (โปรไฟล์ SagePay ต่ำ) หรือมีบางอย่างเปลี่ยนแปลงใน Chrome


ฉันเห็นพฤติกรรมที่เหมือนกันเกือบทั้งหมดใน Chrome 30 เมื่อใช้บริการชำระเงินของ Datacash ที่โฮสต์ แต่ในกรณีของฉัน POST จากไซต์ 3dsecure ไปยังไซต์ Datacash นั้นถูกยกเลิกทั้งที่เป็น https มันกำลังพิสูจน์ให้เห็นว่าเป็นเรื่องลึกลับ
Jason

2

Chrome เวอร์ชัน 33.0.1750.154 m ยกเลิกการโหลดภาพอย่างต่อเนื่องหากฉันใช้Mobile Emulationชี้ไปที่ localhost ของฉัน โดยเฉพาะกับการปลอมแปลงตัวแทนผู้ใช้บน (เทียบกับเพียงการตั้งค่าหน้าจอ)

เมื่อฉันปิดตัวแทนผู้ใช้ปลอมแปลง; คำขอภาพไม่ถูกยกเลิกฉันเห็นภาพ

ฉันยังไม่เข้าใจว่าทำไม ในกรณีก่อนหน้าซึ่งคำขอถูกยกเลิก Request Headers (ข้อควรระวัง: แสดงหัวข้อชั่วคราว) มีเฉพาะ

  • ยอมรับ
  • Cache-Control
  • pragma
  • อ้างอิง
  • User-Agent

ในกรณีหลังทั้งหมดเหล่านั้นรวมถึงผู้อื่นเช่น:

  • คุกกี้
  • สัมพันธ์
  • เจ้าภาพ
  • ยอมรับการเข้ารหัส
  • ยอมรับภาษา

ยัก


2

ฉันได้รับข้อผิดพลาดนี้ใน Chrome เมื่อฉันเปลี่ยนเส้นทางผ่าน JavaScript:

<script>
    window.location.href = "devhost:88/somepage";
</script>

ตามที่คุณเห็นฉันลืม 'http: //' หลังจากที่ฉันเพิ่มมันก็ใช้งานได้


2

สำหรับกรณีของฉันฉันมีสมอด้วยเหตุการณ์คลิกเช่น

<a href="" onclick="somemethod($index, hour, $event)">

ภายในเหตุการณ์คลิกฉันมีการโทรผ่านเครือข่าย Chrome ยกเลิกการร้องขอ สมอมีhrefกับ""วิธีการก็โหลดหน้าเว็บและในเวลาเดียวกันก็มีเหตุการณ์คลิกกับสายเครือข่ายที่ได้รับการยกเลิก เมื่อใดก็ตามที่ฉันแทนที่hrefด้วยโมฆะเช่น

<a href="javascript:void(0)" onclick="somemethod($index, hour, $event)">

ปัญหาหายไป!


2

นี่เป็นอีกกรณีหนึ่งที่คำขอถูกยกเลิกโดย chrome ซึ่งฉันเพิ่งพบซึ่งไม่ได้ครอบคลุมคำตอบใด ๆ

โดยสรุป
ใบรับรองที่ลงชื่อด้วยตัวเองไม่น่าเชื่อถือบนโทรศัพท์ Android ของฉัน

รายละเอียด
เราอยู่ในช่วงการพัฒนา / แก้ไขข้อบกพร่อง url ชี้ไปยังโฮสต์ที่ลงชื่อด้วยตนเอง รหัสเหมือน:

location.href = 'https://some.host.com/some/path'

Chrome เพิ่งยกเลิกการร้องขออย่างเงียบ ๆ โดยไม่ปล่อยให้มือใหม่ไปสู่การพัฒนาเว็บอย่างฉันเพื่อแก้ไขปัญหา เมื่อฉันดาวน์โหลดและติดตั้งใบรับรองโดยใช้โทรศัพท์ Android ปัญหาจะหายไป


2

หากคุณใช้การร้องขอ HTTP ที่ใช้การสังเกตได้เช่นการสร้างใน Angular (2+) การร้องขอ HTTP สามารถถูกยกเลิกได้เมื่อการยกเลิกสามารถสังเกตได้ (สิ่งทั่วไปเมื่อคุณใช้switchMapตัวดำเนินการRxJS 6 เพื่อรวมสตรีม) . ในกรณีส่วนใหญ่ก็เพียงพอที่จะใช้mergeMapตัวดำเนินการแทนหากคุณต้องการให้คำขอเสร็จสมบูรณ์


1

ฉันมีสิ่งเดียวกันกับไฟล์ CSS สองไฟล์ที่เก็บไว้ในโฟลเดอร์อื่นนอกโฟลเดอร์ css หลักของฉัน ฉันใช้ Expression Engine และพบว่าปัญหาอยู่ในกฎในไฟล์ htaccess ของฉัน ฉันเพิ่งเพิ่มโฟลเดอร์ไปยังเงื่อนไขข้อใดข้อหนึ่งของฉันและได้ทำการแก้ไข นี่คือตัวอย่าง:

RewriteCond %{REQUEST_URI} !(images|css|js|new_folder|favicon.ico)

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


1

ฉันฝังแบบอักษรทุกประเภทรวมถึงwoff , woff2 , ttfเมื่อฉันฝังแบบอักษรเว็บในสไตล์ชีท เมื่อเร็ว ๆ นี้ฉันสังเกตเห็นว่า Chrome ยกเลิกคำขอไปยังttfและwoffเมื่อมีwoff2อยู่ ฉันใช้ Chrome รุ่น 66.0.3359.181 ตอนนี้ แต่ฉันไม่แน่ใจว่าเมื่อ Chrome เริ่มยกเลิกแบบอักษรพิเศษ


1

เราพบปัญหาในการติดแท็ก<button>ในแบบฟอร์มซึ่งควรส่งคำขอ ajax จาก js แต่คำขอนี้ถูกยกเลิกเนื่องจากเบราว์เซอร์ที่ส่งแบบฟอร์มโดยอัตโนมัติเมื่อคลิกใด ๆbuttonภายในฟอร์ม

ดังนั้นหากคุณต้องการใช้button แทนปกติdivหรือspanหน้าและคุณต้องการส่งแบบฟอร์มการส่ง js - คุณควรตั้งค่าฟังด้วยpreventDefaultฟังก์ชั่น

เช่น

$('button').on('click', function(e){

    e.preventDefault();

    //do ajax
    $.ajax({

     ...
    });

})


0

ในกรณีของฉันรหัสเพื่อแสดงหน้าต่างไคลเอนต์อีเมลทำให้ Chrome หยุดโหลดรูปภาพ:

document.location.href = mailToLink;

ย้ายไปที่ $ (หน้าต่าง). load (function () {... }) แทน $ (function () {... })


0

สิ่งนี้จะช่วยให้ใครก็ตามที่ฉันเจอสถานะถูกยกเลิกเมื่อฉันออกจากการส่งคืนเป็นเท็จ ในแบบฟอร์มการส่ง สิ่งนี้ทำให้ ajax send ถูกส่งทันทีตามด้วย action action ซึ่งจะเขียนทับหน้าปัจจุบัน รหัสจะแสดงด้านล่างโดยมีผลตอบแทนที่สำคัญเท็จในตอนท้าย

$('form').submit(function() {

    $.validator.unobtrusive.parse($('form'));
    var data = $('form').serialize();
    data.__RequestVerificationToken = $('input[name=__RequestVerificationToken]').val();

    if ($('form').valid()) {
        $.ajax({
            url: this.action,
            type: 'POST',
            data: data,
            success: submitSuccess,
            fail: submitFailed
        });
    }
    return false;       //needed to stop default form submit action
});

หวังว่าจะช่วยใครซักคน


0

สำหรับทุกคนที่มาจาก LoopbackJS และพยายามใช้วิธีการสตรีมที่กำหนดเองเช่นที่ระบุไว้ในตัวอย่างแผนภูมิของพวกเขา ฉันได้รับข้อผิดพลาดนี้โดยใช้ a การPersistedModelเปลี่ยนเป็นพื้นฐานModelแก้ไขปัญหาการeventsourceยกเลิกสถานะของฉัน

นี่เป็นลักษณะเฉพาะสำหรับ loopback api และเนื่องจากนี่เป็นคำตอบอันดับต้น ๆ และยอดนิยมใน Google ฉันคิดว่าฉันได้รวมมันไว้ในคำตอบ


0

ฉันต้องเผชิญกับปัญหาเดียวกันบางส่วนลึกลงไปในรหัสของเราเรามีรหัสเทียมนี้:

  • สร้าง iframe
  • onload ของ iframe ส่งแบบฟอร์ม

  • หลังจาก 2 วินาทีให้ลบ iframe

ดังนั้นเมื่อเซิร์ฟเวอร์ใช้เวลามากกว่า 2 วินาทีในการตอบกลับ iframe ซึ่งเซิร์ฟเวอร์กำลังเขียนคำตอบนั้นถูกลบออก แต่คำตอบนั้นยังคงถูกเขียน แต่ไม่มี iframe ที่จะเขียนดังนั้นโครเมียมจึงยกเลิกคำขอ ดังนั้นเพื่อหลีกเลี่ยงสิ่งนี้ฉันแน่ใจว่า iframe ถูกลบหลังจากการตอบกลับสิ้นสุดลงหรือคุณสามารถเปลี่ยนเป้าหมายเป็น "_blank" ดังนั้นหนึ่งในเหตุผลคือ เมื่อทรัพยากร (iframe ในกรณีของฉัน) ที่คุณกำลังเขียนบางสิ่งในนั้นถูกลบหรือถูกลบออกก่อนที่คุณจะหยุดเขียนมันคำขอจะถูกยกเลิก


0

สำหรับฉัน 'ยกเลิก' สถานะเป็นเพราะไฟล์ไม่ได้อยู่ 404แปลกว่าทำไมโครเมี่ยมไม่แสดง


0

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



0

มันเกิดขึ้นกับฉันเมื่อโหลด 300 ภาพเป็นภาพพื้นหลัง ฉันเดาว่าครั้งแรกที่หมดเวลามันยกเลิกส่วนที่เหลือทั้งหมดหรือถึงคำขอพร้อมกันสูงสุด จำเป็นต้องใช้ 5-at-a-time


0

เหตุผลหนึ่งอาจเป็นได้ว่าXMLHttpRequest.abort ()ถูกเรียกที่ไหนสักแห่งในรหัสในกรณีนี้คำขอจะมีcancelledสถานะในแท็บเครือข่ายเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ Chrome


0

ในกรณีของฉันมันเริ่มมาหลังจากการอัปเดต chrome 76

เนื่องจากปัญหาบางอย่างในรหัส JS ของฉัน window.location ได้รับการปรับปรุงหลายครั้งซึ่งทำให้การยกเลิกการร้องขอก่อนหน้านี้ แม้ว่าจะมีปัญหาเกิดขึ้นก่อนหน้านี้ Chrome เริ่มยกเลิกคำขอหลังจากอัปเดตเป็นเวอร์ชัน 76


0

ฉันมีปัญหาเดียวกันเมื่ออัปเดตบันทึก ภายในบันทึก () ฉันกำลังเตรียมข้อมูลดิบที่นำมาจากแบบฟอร์มให้ตรงกับรูปแบบฐานข้อมูล (ทำการแมปจำนวนมากของค่า enums ฯลฯ ) และการยกเลิกคำขอวางเป็นระยะ ฉันแก้ไขได้โดยนำข้อมูลที่เตรียมไว้ล่วงหน้าจากบันทึก () และสร้างวิธีการเฉพาะ dataPrep () ออกมา ฉันเปลี่ยน dataPrep นี้เป็น async และรอการแปลงข้อมูลที่ใช้หน่วยความจำทั้งหมด จากนั้นฉันจะคืนค่าข้อมูล prepped ไปที่เมธอด save () ที่ฉันสามารถใช้ใน http put client ฉันแน่ใจว่าฉันรอ dataPrep () ก่อนที่จะเรียกวิธีการวาง:

await dataToUpdate = รอ dataPrep (); http.put (apiUrl, dataToUpdate);

วิธีนี้ช่วยแก้ปัญหาการยกเลิกคำขอเป็นระยะ


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.