Chrome Geliştirici Araçları'nda bir kaynak için status = iptal edildi ne anlama geliyor?


402

Bir sayfanın iptal edilmesine ne sebep olur? Chrome Geliştirici Araçları'nın bir ekran görüntüm var.

İptal Edilen Kaynak

Bu sık sık olur, ancak her seferinde olmaz. Diğer kaynaklar önbelleğe alındıktan sonra, sayfa yenilemesi LeftPane.aspx dosyasını yükleyecek gibi görünüyor. Ve gerçekten garip olan şey, Internet Explorer 8'de değil, yalnızca Google Chrome'da gerçekleşiyor. Chrome'un bir isteği neden iptal edeceği hakkında herhangi bir fikir?


13
Bir net-internals izinden daha fazla ayrıntı alabilirsiniz . Ben de benzer bir sorun vardı ve benim durumda iptal net::ERR_ABORTEDkapakları altında olduğunu bulundu . Bu durumda, bu yazı "net :: ERR_ABORTED'in yalnızca bir kullanıcı eyleminin bir yükün kesilmesine neden olması durumunda üretilmesi amaçlandığını açıklar. buton."
John McCarthy

Teşekkürler. Benim durumumda kullanıcı değil çünkü ben kullanıcıyım. Sayfada (çok) çok sayıda çerçeve var. Belki çerçeve src değişiyor? IE'de hiç görmediğim garip. Net-internal'lere bakacağım.
styfle

@ nondescript1 Hatayı yeniden oluştururken yakalamayı yaptım ve bir dosyaya döktüm. Şimdi 18.000 satır json dosyam var. Ne arıyorum?
styfle

3
Dürüst olmak gerekirse bilmiyorum. Aslında status = hakkında daha fazla bilgi ararken kendimi iptal ettiğimde sorunuzla karşılaştım, bu yüzden cevap değil sadece yorum ekliyorum;). Önbellekleme ile ilgili olduğunu düşünmek için hiçbir nedenim yok. Sayfada birisinin başlattığı başka bir gezinme işleminden daha şüpheliyim. Bunu gördüğümde, başka bir sunucu isteğinin iptal edilmesine neden olan window.open () ile bir indirme başlatmaya çalışıyordum. Benim durumumda, Firefox'ta bu sorun yoktu ama Chrome vardı.
John McCarthy

1
Durum sütununda "(iptal edildi)" nin olası bir nedeni - kesinlikle olası tek neden olmasa da - söz konusu URL'nin bir 404 veya başka bir hata döndürdüğü söylenmez. Tutarlı bir şekilde yüklendiğinden emin olmak için URL'yi başka bir sekmede birkaç kez zorla yenileyin.
rakslice

Yanıtlar:


592

Chrome'un çerçeve veya iframe'lere bir şey yükleme isteklerini iptal ettiği benzer bir sorunla mücadele ettik, ancak sadece aralıklı olarak ve bilgisayara ve / veya internet bağlantısının hızına bağlı görünüyordu.

Bu bilgiler güncel olmayan birkaç aydır, ancak Chromium'u sıfırdan oluşturdum, isteklerin iptal edilebileceği tüm yerleri bulmak için kaynaktan kazdım ve hata ayıklamak için hepsinde kesme noktaları tokatladım. Bellekten, Chrome'un bir isteği iptal edeceği tek yer:

  • İsteğin yapılmasına neden olan DOM öğesi silindi (yani bir IMG yükleniyor, ancak yükleme gerçekleşmeden önce IMG düğümünü sildiniz)
  • Verileri yüklemeyi gereksiz kılan bir şey yaptınız. (yani bir iframe yüklemeye başladınız, sonra src'yi değiştirdiniz veya içeriğin üzerine yazdınız)
  • Aynı sunucuya giden çok sayıda istek var ve önceki isteklerde bir ağ sorunu, sonraki isteklerin işe yaramayacağını gösterdi (DNS arama hatası, önceki (aynı) istek, örneğin HTTP 400 hata kodu, vb.)

Bizim durumumuzda nihayet HTML'yi başka bir kareye eklemeye çalışırken bir kareye kadar izledik, bu da bazen hedef karenin yüklenmesi öncesinde bile oldu. Bir iframe'in içeriğine dokunduğunuzda, artık kaynağa kaynağını yükleyemez (nereye koyacağını nasıl bilebilir?), Böylece isteği iptal eder.


2
Çok bilgilendirici, teşekkürler. Bu hatayı çoğaltmakta zorlandım çünkü işler önbelleğe alındığında gerçekleşmez. Javascript'imde bir kesme noktası ayarlanırsa bu gerçekleşmez. İlk madde işareti noktanız büyük olasılıkla sorun değil çünkü silinmiş bir öğe görmüyorum. Bunun bir madde işareti 3 olmadığını biliyorum. "Bir iframe'in içeriğine dokunduğunuzda, artık kaynağa yükleyemezsiniz" ne demek? Bir örnek verebilir misin?
styfle

1
İlginç. Bu yüzden document.writeo kareye tüm s bulmak ve sadece çerçeve yüklendiğinde yazdığınızdan emin olun. Bu durumun anlamını cevapladığınız için bunu doğru cevap olarak işaretleyeceğim.
styfle

3
@styfle Evet, ancak document.write dışında da olabilir. Çerçeveye appendChild veya benzeri gibi yazmaya çalışan her şey buna neden olur. Her karede truebazı değişkenlere yazan bir onLoad işleyicisi oluşturmak isteyebilirsiniz , daha sonra başka kareler herhangi bir şeye dokunmadan önce bunu arar.
whamma

14
Ayrıca bu konuda korkunç sorunlar yaşadım. AJAX yanıtı 301/302 durum koduna sahipse ve yönlendirme URL'si başka bir etki alanındaysa, bunu sürekli olarak tetikleyen bir şey buldum. Bu benim için sorunun tutarlı bir şekilde yeniden üretilmesidir.
eb80

1
Benim için vücuda iframe ekledikten sonra derhal vücuttan çıkarıldı. Satır sonu koydum ve sorun yoktu. Bu yüzden biraz zaman aşımı (15 ms) koyun ve üstesinden gelin. @whamma, bu sorunu ele alma şeklinizi gerçekten motive ediyor. Bu kadar derin ayrıntılar için teşekkürler. :-)
muhammed fesleğen

53

status = iptal edildi, JavaScript etkinliklerindeki ajax isteklerinde de olabilir:

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

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

Olay isteği başarıyla gönderir, ancak iptal edilir (ancak sunucu tarafından işlenir). Bunun nedeni, aynı tıklama etkinliğinde herhangi bir ajax isteğinde bulunmanızdan bağımsız olarak, öğelerin tıklama etkinliklerinde form göndermesidir.

İsteğin iptal edilmesini önlemek için JavaScript event.preventDefault (); çağrılmalı:

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

3
Bu beni kurtardı, benim durumumda ng-clickbir düğme üzerinde açısal kullandığım type="submit"ve sonra çağrılan işlevde bazı ağ yaptım sorun oldu . Chrome bu isteği iptal etmeye devam etti ...
Robin

1
Ne yazık ki benim için çalışmıyor. Başka ipucu var mı?
Krzysztof Madej

Vaov da beni kurtardı! Açısal bir ng-click olayı için $ http isteklerini iç içe geçmiştim ve ikincisi iptal ediliyordu. Varsayılan satırı engelle ayarlandıktan sonra tekrar çalışmaya başladı, teşekkürler.
Bahadir Tasdemir

Bunun için teşekkürler. Bunun CORS veya DOM sorunu olmadığını biliyordum. Belki de @whamma cevaplarını bu eksiksizlik nedeni olarak dahil etmek için güncelleyebilir :)
glidester

Tanrıyı selamlayın !! Efendim, mutlak bir dahisiniz !! Kurtarıldım !!
Dilnoor Singh

25

Not: Herhangi bir sarma form öğeniz olmadığından emin olun .

Ben onclick = {} ile benim düğme bir form öğesi içinde sarılmış benzer bir sorun vardı. Düğmeyi tıkladığınızda form da gönderilir ve bu da hepsini berbat eder ...

Bu cevap muhtemelen hiç kimse tarafından okunmayacak, ama neden yazmadım :)


Bu benim için temel nedendi - bir düğme POST'u iki kez tetikledi. CSS şeyler yüzünden düğmeyi form öğesinden çıkarmak istemedim, bu yüzden çözüm
buydu

Aynı sorun. Açıklığa kavuşturmak için, bir tür gönderme formunda bulunan bir düğme vardı, ancak bir jquery formu gönderme, ajax gönderme yapan bir onclick vardı. FF'de çalıştı, ancak chome ve IE'de başarısız oldu ve bulana kadar beni deli etti.
ChrisThompson

Bu, bir @clicketkinliğin <button>form sarmalayıcı içindeki bir öğeye bağlı olduğu bir Vue.js uygulamasında başıma gelen bir sorunu giderir . Vue'nun @submit.preventolay değiştiricisini kullanmadığınız sürece bunu yapmaktan kaçının .
Paul Wenzel

Benim için durum buydu. type="button"Düğme etiketimi ekleyerek form gönderilmedi ve iptal edilen etkinlik önlendi.
Brandon Medenwald

12

Dikkat edilmesi gereken başka bir şey, AdBlock uzantısı veya genel olarak uzantılar olabilir.

Ama "çok" insanın AdBlock var ....

Uzantıları dışlamak için gizli modda yeni bir sekme açın ve test etmek istediğiniz uzantılar için "gizli modda izin ver kapalı" seçeneğinden emin olun.


Tam olarak ne oldu. Noscript eklentisi açıldı ve aniden iFrame artık yüklenmiyordu.
Margus Pala

Benim için Hola eklentisiydi. Devre dışı bırakıldıktan sonra, istekler artık iptal edilmiyor.
Lenin Raj Rajasekaran

1
Benim durumumda "JavaScript Hata Bildirimi" krom uzantısı oldu
Alex

Her şeye bakmaya çalıştım ve Angular 8 ile hala şanssızım, tüm uzantıları devre dışı bıraktım ve hala yavaş 3G şebekesinde önceki aramalar iptal edildi. :(
born2net

10

"X-Frame-Options" başlık etiketini kontrol etmek isteyebilirsiniz. SAMEORIGIN veya DENY olarak ayarlanmışsa, iFrame ekleme spesifikasyon başına Chrome (ve diğer tarayıcılar) tarafından iptal edilir .

Ayrıca, bazı tarayıcıların ALLOW-FROM ayarını desteklediğini, ancak Chrome'un desteklemediğini unutmayın.

Bu sorunu çözmek için, "X-Frame-Options" başlık etiketini kaldırmanız gerekir. Bu, sizi tıklama saldırılarına açık bırakabilir, böylece risklerin ne olduğuna ve bunları nasıl azaltacağınıza karar vermeniz gerekir.


Bu benim sorunumdu. Bu iş parçacığı bunu düzeltmek için nasıl iyi cevap vermektedir: stackoverflow.com/questions/6666423/...
ToniTornado

8

Benim durumumda, jquery global zaman aşımı ayarları, 500 ms'ye kadar bir jquery eklentisi kurulum global zaman aşımı olduğunu buldum, böylece istek 500 ms'yi aştığında, krom isteği iptal edecektir.


Aynı sorunla karşılaşmak. Benim durumumda, VirtualBox konuk sunucusuyla yerel bir WordPress / WooCommerce geliştirmesi ve bazı WooCommerce AJAX isteklerinin önceden tanımlanmış 5000 ms'lik AJAX zaman aşımı süresi var. Birisi aynı sorunla karşılaşırsa, bu zaman aşımı includes/class-wc-frontend-scripts.phpdosyada tanımlanır .
Ivan Shatsky

7

İşte başıma gelenler: Sunucu, 302 yönlendirmesi için hatalı biçimlendirilmiş bir "Konum" başlığı döndürüyordu. Chrome bana bunu söyleyemedi elbette. Sayfayı firefox'ta açtım ve hemen sorunu keşfettim. Birden fazla araca sahip olmak güzel :)


Sebep konusunda çok açık olmasına rağmen, yine de bu aslında çok yararlı bir cevaptır. Bazı eski kahve kodu kodunu düzenliyordum ve tek tırnakların #{}enterpolasyonu yapmadığını tamamen unuttum , bu nedenle ortaya çıkan url yanlış biçimlendirildi. Ancak Chrome bana bu konuda hiçbir şey söylemedi.
kumarharsh

4

Durumla karşılaştığımız başka bir yer de (canceled)belirli bir TLS sertifikası yanlış yapılandırmasında. Gibi bir site https://www.example.com, sertifikanın içermediği www.ancak geçerli olmadığı şekilde yanlış yapılandırılırsa https://example.com, krom bu isteği iptal eder ve otomatik olarak ikinci siteye yönlendirir. Bu değil Firefox için kılıf.

Şu anda geçerli örnek: https://www.pthree.org/


temel olarak sadece sertifika olmayan alan adından sertifika alanına yönlendirebilir misiniz? çıplaktan www? veya her zaman iptal edildiğini veya sertifika hatasını mu gördünüz?
Konstantin Vahrushev

3

Bir iframe içindeki ayrı alan adlarında güvenli ve güvenli olmayan sayfalar arasında yeniden yönlendirilirken iptal edilen bir istek geldi. Yeniden yönlendirilen istek geliştirici araçlarında "iptal edildi" isteği olarak gösterildi.

Ödeme ağ geçidim tarafından barındırılan bir form içeren bir iframe içeren bir sayfam var. İframe'deki form gönderildiğinde, ödeme ağ geçidi sunucumdaki bir URL'ye yeniden yönlendirir. Yönlendirme yakın zamanda çalışmayı durdurdu ve bunun yerine "iptal edildi" isteği olarak sona erdi.

Görünüşe göre Chrome (Windows 7 Chrome 30.0.1599.101 kullanıyordum) artık iframe içindeki bir yönlendirmenin ayrı bir alandaki güvenli olmayan bir sayfaya gitmesine izin vermedi. Bunu düzeltmek için iframe'deki yeniden yönlendirilen isteklerin her zaman güvenli URL'lere gönderildiğinden emin oldum.

Yalnızca bir iframe ile daha basit bir test sayfası oluşturduğumda, konsolda bir uyarı vardı (daha önce kaçırmıştım ya da belki görünmüyordu):

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

Yönlendirme, PC, Mac ve Android'de Chrome'da iptal edilen bir isteğe dönüştü. Web sitemin kurulumuna (SagePay Düşük Profil) özgü olup olmadığını veya Chrome'da bir şey değişip değişmediğini bilmiyorum.


Datacash tarafından barındırılan ödeme hizmetlerini kullanırken Chrome 30'da neredeyse aynı davranışı görüyorum, ancak benim durumumda, her ikisi de https olmasına rağmen, 3dsecure sitesinden Datacash sitesine POST iptal edildi. Bu gizemli bir şey olduğunu kanıtlıyor.
Jason

2

Yerel sürümümü işaret eden Mobil Öykünmeyi kullanıyorsanız, Chrome Sürüm 33.0.1750.154 m, resim yüklemelerini sürekli olarak iptal eder ; özellikle User Agent kimlik sahtekarlığı açıkken (yalnızca Ekran ayarlarına göre).

Kullanıcı Aracısı kimlik sahtekarlığını kapattığımda; resim istekleri iptal edilmedi, resimleri görüyorum.

Hala nedenini anlamıyorum; isteğin iptal edildiği önceki durumda, İstek Başlıkları (DİKKAT: Geçici başlıklar gösterilir)

  • Kabul etmek
  • Cache-Control
  • Pragma
  • yönlendiren
  • User-Agent

İkinci durumda, bunların tümü ve diğerleri:

  • Kurabiye
  • Bağ
  • evsahibi
  • Accept-Encoding
  • Accept-Language

omuz silkme


2

JavaScript ile yeniden yönlendirdiğimde Chrome'da bu hatayı aldım:

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

Gördüğünüz gibi 'http: //' i unuttum . Ekledikten sonra işe yaradı.


2

Benim durumum için, tıklama etkinliğine sahip bir çapa vardı

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

Tıklama etkinliğinin içinde, Chrome isteği iptal eden bir ağ çağrısı yaptım. Çapa sahip hrefolan ""bu sayfayı yeniden ve aynı zamanda iptal olur ağ çağrısıyla olay tıklayın vardır, araçlar. Ne zaman ben hrefgeçersiz gibi değiştirin

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

Sorun ortadan kalktı!


2

Burada daha önce karşılaştığım krom tarafından iptal edilen başka bir talep örneği var;

Özetle Kendim
imzalı sertifika android telefonumda güvenilmiyor.

Ayrıntılar
Geliştirme aşamasında / hata ayıklama aşamasındayız. URL, kendinden imzalı bir ana bilgisayarı işaret ediyor. Kod şöyle:

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

Chrome, isteği sessizce iptal etti ve yeni başlayanların benim gibi web geliştirme konusunda sorunu çözmesi için hiçbir ipucu bırakmadı. Android telefon kullanarak sertifikayı indirip yükledikten sonra sorun ortadan kalktı.


2

Açısal (2+) yerleşik olanlar gibi bazı Gözlenebilir tabanlı HTTP isteklerinden yararlanırsanız, gözlemlenebilir iptal edildiğinde HTTP isteği iptal edilebilir ( switchMapakışları birleştirmek için RxJS 6 operatörünü kullandığınızda sık karşılaşılan şey ) . mergeMapİsteğin tamamlanmasını istiyorsanız, çoğu durumda bunun yerine operatör kullanmak yeterlidir .


1

Benim ana css klasörü dışında başka bir klasörde saklanan iki CSS dosyaları ile aynı şey vardı. Expression Engine kullanıyorum ve sorunun htaccess dosyamdaki kurallarda olduğunu gördüm. Klasörü koşullardan birine ekledim ve düzeltti. İşte bir örnek:

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

Bu nedenle, htaccess dosyanızı olası çakışmalar açısından kontrol etmeye değer olabilir


1

Ben yazı yanı sıra her türlü gömülü olan woff , woff2 , ttf ben stil sayfasındaki bir web yazı katıştırdığınızda. Son zamanlarda , woff2 mevcut olduğunda Chrome'un ttf ve woff talebini iptal ettiğini fark ettim . Şu anda Chrome 66.0.3359.181 sürümünü kullanıyorum, ancak Chrome'un ekstra yazı tipi türlerini iptal etmeye ne zaman başladığını bilmiyorum.


1

<button>Js'den ajax isteği göndermek gerekiyordu formda etiket sahip bu sorun vardı . Ancak bu istek, formun buttoniçindeki herhangi bir tıklamayla otomatik olarak form gönderen tarayıcı nedeniyle iptal edildi .

button Normal divveya spansayfa yerine kullanmak istiyorsanız ve form atma js göndermek istiyorsanız - preventDefaultişlevli bir dinleyici kurmalısınız .

Örneğin

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

    e.preventDefault();

    //do ajax
    $.ajax({

     ...
    });

})

0

Aynı şeyi çağırırken bana da oldu. js dosyası $ ile. ajax ve ajax isteğinde bulunuyorum, yaptığım şey normal olarak adlandırmaktı.


0

Benim durumumda, e-posta istemcisi penceresini gösteren kod, Chrome'un resim yüklemeyi durdurmasına neden oldu:

document.location.href = mailToLink;

$ (function () {...}) yerine $ (window) .load (function () {...}) 'a taşımak yardımcı oldu.


0

In-dönüş yanlış dışarıda bıraktığımda iptal durumu rastladı herkese yardımcı olabilir; şeklinde gönderin. Bu, ajax gönderisinin hemen ardından geçerli sayfanın üzerine yazan gönderme eylemini izlemesine neden oldu. Kod, önemli dönüş yanlış sonunda olacak şekilde aşağıda gösterilmiştir.

$('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
});

Umarım birine yardım eder.


0

LoopbackJS'den gelen ve grafik örneklerinde belirtildiği gibi özel akış yöntemini kullanmaya çalışan herkes için. Bu hatayı PersistedModeltemel kullanarak geçiş yaparak alıyordumModeleventsource duruma geçerek durumun iptal edilmesiyle ilgili sorunum düzeltildi .

Yine, bu özellikle geri döngü api içindir. Ve bu bir üst cevap ve google üst i i bu cevaplar karışımı atmak düşündüm çünkü.


0

Ben aynı sorunla karşı karşıya, bizim kod derin bir yerde biz bu sözde kod vardı:

  • iframe oluştur
  • iframe'in yüklenmesi

  • 2 saniye sonra iframe'i çıkarın

bu nedenle, sunucunun yanıt yazdığı iframe'e yanıt vermesi 2 saniyeden fazla sürdüğünde, yanıt kaldırıldı, ancak yanıt yine de yazılacaktı, ancak yazılacak bir iframe yoktu, bu nedenle krom isteği iptal etti, böylece bunu önlemek için iframe sadece yanıt bittikten sonra kaldırıldı emin olun, ya da hedefi "_blank" olarak değiştirebilirsiniz. Bu nedenle nedenlerden biri: bir şey yazdığınız kaynak (benim durumumda iframe), yazmayı durdurmadan önce kaldırılır veya silinirse, istek iptal edilir


0

Benim için 'iptal edildi' durumu dosyanın mevcut olmamasıydı. Chrome'un neden görünmediği garip 404.


0

Benim için yanlış bir yol kadar basitti. Hata ayıklamadaki ilk adımın dosyayı ajax vs.'den bağımsız olarak yükleyip yükleyemeyeceğinizi görmek olduğunu öneririm.


0

İstekler bir izleme koruma eklentisi tarafından engellenmiş olabilir.


0

300 görüntü arka plan görüntüsü olarak yüklenirken başıma geldi. İlk kez zaman aşımına uğradı, geri kalan her şeyi iptal etti veya maksimum eşzamanlı istek ulaştı tahmin ediyorum. her seferinde 5 tane uygulamak gerekir



0

Benim durumumda, krom 76 güncellemesinden sonra gelmeye başladı.

JS kodumdaki bazı sorunlar nedeniyle, window.location birden çok kez güncelleniyordu ve bu da önceki isteğin iptal edilmesiyle sonuçlandı. Sorun daha önce mevcut olsa da, Chrome 76 sürümüne güncellendikten sonra isteği iptal etmeye başladı.


0

Bir kaydı güncellerken de aynı sorunu yaşadım. Save () içinde veritabanı biçimini (numaralandırma değerleri, vb bir çok eşleme yapıyor) eşleştirmek için formdan alınan ham veri hazırlanıyor ve bu zaman zaman put isteği iptal eder. save () 'den hazırlanıyor ve dışarı adanmış bir dataPrep () yöntemi oluşturarak veri alarak çözüldü. Bu dataPrep'i zaman uyumsuz hale getirdim ve tüm bellek yoğun veri dönüşümünü bekledim. Daha sonra http put istemcisinde kullanabileceğiniz save () yöntemine önceden hazırlanmış veri döndürür. Ben put yöntemi çağırmadan önce dataPrep () bekliyorum emin yaptı:

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

Bu, talebin aralıklı olarak iptal edilmesini çözdü.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.