"PERHATIAN: header sementara ditampilkan" di debugger Chrome


400

Saya melihat pesan peringatan yang aneh ketika melihat sumber yang diunduh menggunakan Google chrome inspector ( F12):

Header sementara perhatian ditunjukkan

masukkan deskripsi gambar di sini

Saya menemukan sesuatu yang mungkin relevan, Panel Jaringan: menambahkan kehati-hatian tentang tajuk permintaan sementara , tetapi saya tidak dapat sepenuhnya memahaminya. Pertanyaan terkait dapat ditemukan permintaan blok Chrome serta XMLHttpRequest tidak dapat dimuat. Sumber daya yang diturunkan menunjukkan kehati-hatian: Header sementara ditampilkan .

Mirip dengan pertanyaan pertama , sumber saya diblokir, tetapi kemudian secara otomatis memuat sumber yang sama. Berbeda dengan pertanyaan kedua , saya tidak ingin memperbaiki apa pun; Saya ingin tahu apa arti pesan ini dan mengapa saya menerimanya.


3
Masalah ini juga dapat muncul jika reuqest tidak dikirim karena peralihan domain misalnya mengirim data melalui ajax dari www.domain.tld ke domain.tld atau sebaliknya.
Andre Baumeier

@wvega Ada masalah serupa yang diposting di pertanyaan SO ini tetapi sepertinya tidak ada penjelasan yang mungkin untuk masalah Terkirim Tajuk Provisional ini . Ada solusi konkret untuk ini? sangat menyebalkan! Saya memposting pertanyaan ini beberapa waktu sebelumnya.
webblover

1
@webblover Ada penjelasan yang bagus dari wvega. Dan saya sebenarnya tidak mencari solusi. Saya ingin tahu tentang suatu alasan.
Salvador Dali

Ini membantu saya ketika saya mematikannya:chrome://flags/#site-isolation-trial-opt-out
Илья Зеленько

Baca jawaban saya, tidak serumit kelihatannya: stackoverflow.com/questions/21177387/…
csandreas1

Jawaban:


353

Sumber daya dapat diblokir oleh ekstensi (AdBlock dalam kasus saya).

Pesan ada di sana karena permintaan untuk mengambil sumber daya itu tidak pernah dibuat, jadi tajuk yang ditampilkan bukan hal yang nyata. Seperti dijelaskan dalam masalah yang Anda referensikan, header sebenarnya diperbarui ketika server merespons, tetapi tidak ada respons jika permintaan diblokir.


Cara saya menemukan tentang ekstensi yang memblokir sumber daya saya adalah melalui alat internet-internal di Chrome:

Untuk Versi chrome terbaru

  • Ketikkan chrome://net-export/bilah alamat dan tekan enter.
  • Mulai merekam. Dan simpan file rekaman ke lokal.
  • Buka halaman yang menunjukkan masalah.
  • Kembali ke internet-internal
  • Anda dapat melihat file Log Tercatat di sini https://netlog-viewer.appspot.com/#import
  • klik acara (###) dan gunakan bidang teks untuk menemukan acara yang terkait dengan sumber daya Anda (gunakan bagian dari URL).
  • Terakhir, klik pada acara tersebut dan lihat apakah info yang ditampilkan memberi tahu Anda sesuatu.

Untuk Versi Chrome yang Lebih Lama

  • Ketikkan chrome://net-internalsbilah alamat dan tekan enter.
  • Buka halaman yang menunjukkan masalah.
  • Kembali ke internet-internal, klik pada acara (###) dan gunakan bidang teks untuk menemukan acara yang terkait dengan sumber daya Anda (gunakan bagian dari URL).
  • Terakhir, klik pada acara tersebut dan lihat apakah info yang ditampilkan memberi tahu Anda sesuatu.

7
Jawaban Shazz lebih baik. Anda melihat pesan ini di debugger setiap kali sumber daya diambil dari cache browser tanpa menanyakan server apakah konten telah berubah.
Maor

4
Saya pikir kedua jawaban itu benar, mereka menceritakan dua sisi dari cerita yang sama. Pesan ditampilkan ketika permintaan diblokir atau sumber daya dimuat dari cache, tetapi juga setelah setiap permintaan dimulai dan saat browser menunggu tanggapan dari server. Segera setelah respons tiba, pesan hilang dan tajuk yang sebenarnya ditampilkan.
Willington Vega

2
Jika halaman yang dianalisis utamanya dialihkan, misalnya example.com/a -> 301-> example.com/b, dan halaman target menjawab dengan 200, dan kemudian Anda mengklik inspektur halaman target / b untuk melihat data header , Anda akan mendapatkannya, dilabeli dengan "Header sementara ditampilkan". Itu benar, karena, Anda tidak menganalisis halaman target secara langsung. Jika Anda melakukannya, Anda mendapatkan data header tanpa label.
Evgeniy

1
Saya dapat menentukan bahwa ini adalah masalah saya karena ketika saya melakukan hal di atas. Situs https saya memanggil file https css yang melakukan 302 redirect ke halaman http. Keamanan tidak akan mengizinkan file dimuat dan hanya menampilkan tajuk sementara.
Steropes

1
Ada penjelasan yang sangat baik tentang berbagai alasan mengapa hal ini dapat terjadi: stackoverflow.com/questions/12009423/…
boldnik

112

Saya percaya itu terjadi ketika permintaan sebenarnya tidak terkirim. Biasanya terjadi ketika Anda memuat sumber daya yang di-cache.


61
Tidak, 304 tidak dimodifikasi berasal dari server sebagai tanggapan atas permintaan bersyarat. Jika Anda memuat sumber daya yang di-cache dan browser Anda tidak harus menghubungi server, Anda tidak akan mendapatkan 304 yang tidak dimodifikasi atau status HTTP apa pun karena permintaan HTTP tidak akan dibuat.
thomasrutter

7
Ini berfungsi untuk saya, ketika saya melihat "Header sementara ditampilkan" di panel debugger, kode status dari permintaan itu adalah "200 OK (dari cache)"
richie

3
Saya melihat ini dengan respons pekerja layanan, jadi saya pikir setidaknya dalam beberapa kasus, Anda benar tentang respons cache :)
jacoballenwood

4
Saya mematikan cache di alat dev dan masih mendapatkan pesan ini. Status untuk semua file adalah 200, tidak ada "(dari cache)". Jadi kadang-kadang mungkin karena cache, tetapi tentu saja tidak selalu.
Ralf

Ini memuat data dari cache dalam kasus saya.
Aviv Lo

40

Untuk chrome v72 + yang menyelesaikannya untuk saya hanya ini:

buka chrome://flags/dan nonaktifkan 3 flag ini

  • Nonaktifkan isolasi situs
  • Aktifkan layanan jaringan
  • Menjalankan layanan jaringan dalam proses

masukkan deskripsi gambar di sini

atau Anda dapat melakukannya dari baris perintah:

chrome --disable-site-isolation-trials --disable-features=NetworkService,NetworkServiceInProcess

mengapa ini terjadi?

Tampaknya Google sedang refactoring mesin Chromium mereka ke dalam struktur modular, di mana berbagai layanan akan dipisahkan menjadi modul dan proses yang berdiri sendiri. Mereka menyebut proses ini servicification. Layanan jaringan adalah langkah pertama, layanan Ui, layanan Identitas, dan Layanan perangkat akan muncul. Google memberikan informasi resmi di situs proyek Chromium .

apakah berbahaya untuk mengubahnya?

Contohnya adalah jaringan: setelah kita memiliki layanan jaringan, kita dapat memilih untuk menjalankannya keluar dari proses untuk stabilitas / keamanan yang lebih baik, atau dalam proses jika sumber daya kita terbatas . sumber


4
Saya dapat menjalankannya hanya dengan "Aktifkan layanan jaringan" dan "Jalankan layanan jaringan dalam proses".
smalone

Saya baru saja menonaktifkan isolasi situs dan itu berhasil untuk saya.
Ashrith

3
Ini berfungsi di Chrome biasa (v74), namun versi terbaru Chrome Canary (v76) sekarang kehilangan tanda "# network-service" ... Tidak dapat menjalankannya di Canary tanpa itu.
kaya

Saya melihat masalah ini pada keduanya localhost:8080dan google.com(!?). Menonaktifkan isolasi situs memperbaiki google.com, tetapi bukan localhost. Menonaktifkan hanya dua opsi lainnya yang memperbaikinya untuk semua kasus.
BlueRaja - Danny Pflughoeft

Saya hanya perlu mematikan ini: chrome: // flags / # site-isolation-trial-opt-out
Илья Зеленько

25

Saya mengalami masalah ini, dan saya berhasil mengidentifikasi penyebab tertentu, yang tidak disebutkan di atas baik dalam jawaban atau pertanyaan.

Saya menjalankan js stack penuh, ujung depan sudut dan ujung belakang simpul pada SSL, dan API berada pada domain berbeda yang berjalan pada port 8081, jadi saya melakukan permintaan CORS dan withCredentials karena saya menjatuhkan cookie sesi dari API

Jadi secara khusus skenario saya adalah: Permintaan POST, withCredentials to port 8081 menyebabkan pesan "CAUTION: provisional header ditampilkan" di inspektur dan juga tentu saja memblokir permintaan secara bersamaan.

Solusi saya adalah mengatur apache ke proxy untuk mengirimkan permintaan dari port SSL biasa 443 ke node SSL port 8081 (node ​​harus berada di port yang lebih tinggi karena tidak dapat dijalankan sebagai root in prod). Jadi saya kira Chrome tidak suka permintaan SSL ke port SSL yang tidak konvensional, tetapi mungkin pesan kesalahan mereka bisa lebih spesifik.


2
Itu adalah kebijakan yang sama dengan asal browser - halaman web Anda dan sumber daya yang Anda baca harus pada port yang sama. developer.mozilla.org/en-US/docs/Web/Security/…
r3m0t

1
Terima kasih luar biasa atas bantuannya. Saya menggunakan server dev webpacks dan saya bisa menambahkan aturan penulisan ulang. '/graphql': { target: 'http://10.10.1.38:4000', changeOrigin: true }
James Harrington

Demikian pula, saya memecahkan masalah ini dengan menambahkan "proxy": "http://192.168.98.110:1234"ke saya package.jsondi proyek create-react-app. Tidak seperti jawabannya, saya tidak menggunakan HTTPS di mana saja di dev, tetapi ini diperlukan karena aplikasi dan api saya menggunakan IP yang berbeda.
chrishiestand

16

Ini juga dapat terjadi (hanya untuk permintaan lintas-asal) karena fitur baru yang disebut isolasi situs

Halaman ini merinci masalah dan penyelesaiannya . Yang mana untuk masuk ke chrome://flags/#site-isolation-trial-opt-outdalam chrome dan mengubah pengaturan itu ke "Opt-out" dan memuat ulang chrome.

Ini masalah yang diketahui . Namun halaman itu mengatakan itu diperbaiki di chrome 68, tapi saya sedang menjalankan chrome 68 dan saya masih memiliki masalah.


1
Jika permintaan Anda tidak diblokir (200 OK), itu hanya terjadi dengan permintaan CORS, dan header yang hilang adalah Cookie , Anda ingin memeriksa jawaban ini. Terima kasih, @onlynone
semako

@semako, bisa tolong jelaskan ini sedikit lebih detail? saya menghadapi masalah yang sama, tetapi saya tidak sepenuhnya mengerti mengapa. untuk informasi lebih lanjut, silakan lihat posting terbaru saya. Terima kasih.
dan bps

12

HTTP / 2 Sumberdaya dorong akan menghasilkan Provisional headers are showndi inspektur untuk teori yang sama seperti @wvega diposting dalam jawabannya di atas .

misalnya: Karena server mendorong sumber daya ke klien ( sebelum klien meminta mereka ), peramban memiliki sumber daya yang di-cache dan oleh karena itu klien tidak pernah membuat / membutuhkan permintaan; Jadi karena...

... header asli diperbarui ketika server merespons, tetapi tidak ada respons jika permintaan diblokir.


12

Situasi saya terkait lintas asal .
Situasi: Browser mengirim OPTIONSpermintaan sebelum mengirim permintaan sebenarnya seperti GETatau POST. Pengembang Backend lupa untuk menangani OPTIONSpermintaan, membiarkannya melalui kode layanan, membuat waktu pemrosesan terlalu lama. Lebih lama dari pengaturan batas waktu yang saya tulis di axiosinisialisasi, yaitu 5.000 milidetik. Karena itu, permintaan sebenarnya tidak dapat dikirim, dan kemudian saya menemui provisional headers are shownmasalah.
Solusi: Ketika datang untuk OPTIONSmeminta, backend api hanya mengembalikan hasil, itu membuat permintaan lebih cepat dan permintaan nyata dapat dikirim sebelum batas waktu.


6

Saya ragu jawaban saya tepat waktu untuk membantu Anda tetapi orang lain mungkin merasa terbantu. Saya mengalami masalah serupa dengan skrip jjazah Ajax Post yang saya buat.

Ternyata saya memiliki kesalahan ketik pada atribut href dari tag A yang saya gunakan untuk mem-posting. Saya telah mengetik href = " javacsript:; " (membalikkan tanda 's' dan 'c') .. ini menyebabkan skrip mencoba menyegarkan laman saat pos berusaha memecat. mengoreksi kesalahan ketik dan itu bekerja dengan baik untuk saya.


Berlari ke masalah yang sama, tidak ada kesalahan ketik tapi saya punya skrip memuat ulang halaman sebelum POST dipecat / selesai.
Raindal

4

Pesan ini dapat terjadi ketika situs web dilindungi menggunakan HSTS . Kemudian, ketika seseorang menautkan ke versi HTTP URL, browser, seperti yang diinstruksikan oleh HSTS, tidak mengeluarkan permintaan HTTP, tetapi secara internal mengalihkan ke sumber daya HTTPS dengan aman. Ini untuk menghindari serangan downgrade HTTPS seperti sslstrip .


Saya menonaktifkan HSTS dan tajuk asli muncul lagi. Terima kasih!
kenberkeley

3

Itu mungkin karena Anda mengirim permintaan Ajax, pada saat yang sama Anda melompat halaman Anda ke yang lain menggunakan location.href atau sesuatu seperti itu. Jadi permintaan sebelumnya gagal.


2

Pesan hati-hati ini juga terjadi jika responsnya tidak valid dan karenanya dijatuhkan oleh browser.

Dalam kasus saya permintaan dikirim dengan benar ke server, kode sisi server kemudian menghasilkan kesalahan dan penanganan kesalahan kustom saya mengembalikan pesan kesalahan di bidang pesan status HTTP. Tetapi kesalahan ini tidak diterima di sisi klien, karena karakter yang tidak valid dalam pesan kesalahan (dijelaskan di sini http://aspnetwebstack.codeplex.com/workitem/1386 ) yang mengakibatkan header respons yang korup.


2

Saya mengalami masalah ini dengan panggilan AJAX yang tidak akan pernah selesai. Saya mengikuti saran dan tip wvega tentang debugging chrome://net-internalsuntuk akhirnya menentukan yang lainclick event handler lain di halaman, mendengarkan pada node induk, menyebabkan browser untuk menavigasi ke URL yang sama (jadi itu tidak mudah terlihat).

Solusinya adalah untuk menambahkan event.stopPropagation()dalam clickhandler pada formulir tombol submit untuk menjaga klik dari menggelegak DOM dan membatalkan permintaan AJAX berlangsung (dimulai melalui submithandler pada form).


2

Saya baru saja mengetahui ini (hari ini sebenarnya) di mana saya menerima panggilan AJAX ke server dan Chrome mengeluarkan "Perhatian: Header sementara ditampilkan." Di sisi server PHP scripting, ada query MySQL yang bisa sangat instan atau memakan waktu beberapa detik tergantung pada skenario yang diberikan. Respons server saya tidak dikirim kembali ke browser hingga pertanyaan selesai. Saya menemukan bahwa saya mendapatkan kesalahan ini hanya ketika permintaan waktu (hingga total beberapa detik) sedang dilakukan dan mencegah tanggapan agar tidak dikirim kembali.

Skenario saya melibatkan kemungkinan yang sangat langka karena harus mengubah tabel dengan menambahkan / menghapus ratusan kolom untuk output model cuaca ... maka respons lag dari iterasi melalui loop kueri ALTER TABLE.


Pekerja PHP mungkin menjadi sesuatu untuk Anda
Bartłomiej Zalewski

2

Alasan umum ini terjadi adalah jika Anda melacak suatu peristiwa dan Anda tidak mencegah tindakan default. Misalnya, jika Anda memiliki acara klik, maka Anda ingin menyertakan:

e.preventDefault();

atau

return false;

Jika tidak, Anda akan melihat peringatan tajuk sementara serta status "dibatalkan" di tab Jaringan di konsol web Anda.


2

Dalam kasus saya itu hanya set path salah ke sumber daya (svg / img)


Ya - bagi saya, izin tidak ada saat menggunakan input file untuk permintaan.
phil294

2

Masalah ini terjadi pada saya ketika saya mengirim tajuk Otorisasi HTTP yang tidak valid. Saya lupa base64 menyandikannya.


1
Kasus saya adalah tajuk Otorisasi terlalu lama
Agorilla

1

Saya menemukan ini dan hilang ketika saya beralih dari https ke http. Sertifikat SSL yang kami gunakan di dev tidak diverifikasi oleh pihak ke-3. Mereka hanya sertifikat dev yang dihasilkan secara lokal.

Panggilan yang sama berfungsi dengan baik di Chrome Canary dan Firefox. Peramban ini tampaknya tidak seketat sertifikasi SSL seperti halnya Chrome. Panggilan akan gagal di Chrome dengan pesan "CAUTION: Provisional headers ...".

Saya pikir / berharap bahwa ketika kami menggunakan sertifikat SSL yang sah di panggung dan prod, kami tidak akan melihat perilaku ini di Chrome lagi.


saya mencoba meringkuk, dan menerima 60. dari jawaban ini temukan rantai yang hilang pada instalasi SSL. tambahkan rantai dan masalah hilang. Terima kasih Bung! silakan gunakan ini untuk memeriksa: curl -s -D- https: // <yourcomain.com>
apis17

1

Hanya melempar dua sen saya. Saya sedang menulis Aplikasi Web menggunakan permintaan CORS dan layanan web RESTful penuh. Saya telah menemukan chrome akan melempar kesalahan ini ketika saya memiliki pengecualian yang tidak ditangani atau Kesalahan PHP dilemparkan. Hanya memetikan orang lain mengalami masalah. Saya menemukan bahwa ketika ini terjadi saya dapat menjalankan Aplikasi Chrome "Tukang Pos - Sisihkan Klien" dan menjalankan permintaan yang sama persis tetapi di Aplikasi Chrome saya akan benar-benar mendapatkan Kesalahan PHP yang dilempar alih-alih kesalahan non-deskriptif ini.


1

Saya menjalankan masalah ini ketika saya mencoba memuat main.js untuk memerlukan js untuk kedua kalinya setelah saya membuat perubahan sebagai akibat dari kesalahan. Saya baru saja aktif di Pengaturan Alat Pengembang "Nonaktifkan Cache (Ketika DevTools Terbuka)". dan itu pesona.


Baru saja mengalami masalah serupa di mana video html5 tidak mau memuat ketika alat dev Chrome dibuka saat saya menjaga 'Nonaktifkan cache (selagi DevTools terbuka)' diaktifkan. Menonaktifkan pengaturan menyelesaikan masalah.
Anth12

1

Skenario lain yang mungkin saya lihat - permintaan yang sama persis sedang dikirim lagi setelah beberapa milidetik (kemungkinan besar karena bug di sisi klien).
Jika demikian, Anda juga akan melihat bahwa status permintaan pertama "dibatalkan" dan latensi hanya beberapa milidetik.


1

Ini terjadi pada saya, ketika saya memiliki tautan unduhan dan setelah mengkliknya saya mencoba juga untuk menangkap klik dengan jquery dan mengirim permintaan ajax. Masalahnya adalah karena ketika Anda mengklik tautan unduhan, Anda meninggalkan halaman, meskipun tidak terlihat. Jika tidak ada transfer file, Anda akan melihat halaman yang diminta .. Jadi saya menetapkan target = "_ blank" untuk mencegah masalah ini.


1

Saya mendapatkan kesalahan ini ketika saya mencoba untuk mencetak halaman dalam sembulan. Dialog cetak ditampilkan dan masih menunggu penerimaan atau pembatalan pencetakan saya di sembulan sementara di halaman master juga menunggu di latar belakang yang menunjukkan pesan AWAS tajuk sementara ditampilkan ketika saya mencoba mengklik tautan lain.

Dalam kasus saya, solusinya adalah menghapus window.print ();skrip yang sedang dijalankan pada <body>jendela popup untuk mencegah dialog cetak.


1

Saya melihat ini terjadi ketika jumlah koneksi ke server saya melebihi batas maksimum 6 koneksi-per-server Chrome sebesar 6.


1

Gunakan tinju kode ini untuk kode Anda:

header('Cache-Control: no-cache, no-store, must-revalidate');
header('Pragma: no-cache');
header('Expires: 0');

Ini bekerja untuk saya.


0

Ini solusi lain.

Jika Anda mengalami masalah ini dengan panggilan $ ajax (), tambahkan http://sebelum serverhost Anda akan menyelesaikan masalah Anda.

var requestURL = "http://" + serverHost;
$.ajax({
    dataType: "json",
    url: requestURL,
    data: data,
    success: success    
});

0

Jika Anda sedang mengembangkan aplikasi Asp.Net Mvc dan Anda mencoba untuk mengembalikan JsonResultcontroller Anda, pastikan Anda menambahkan JsonRequestBehavior.AllowGetke Jsonmetode. Itu memperbaikinya bagi saya.

public JsonResult GetTaskSubCategories(int id)
{
    var subcategs = FindSubCategories(id);

    return Json(subcategs, JsonRequestBehavior.AllowGet);  //<-- Notice it has two parameters
}

0

"Perhatian: tajuk sementara diperlihatkan" pesan dapat ditampilkan ketika situs web yang dihosting di HTTPS memanggil panggilan ke WebApi yang dihosting di HTTP. Anda dapat memeriksa semua jika semua Api Anda adalah HTTPS. Browser mencegah untuk melakukan panggilan ke sumber daya tidak aman. Anda dapat melihat pesan serupa di kode Anda saat menggunakan FETCH API ke domain dengan HTTP.

Konten Campuran: Halaman di ' https://website.com ' dimuat melalui HTTPS, tetapi meminta sumber daya tidak aman ' http://webapi.com '. Permintaan ini telah diblokir; konten harus disajikan lebih dari HTTPS.


0

Saya memiliki masalah serupa dengan aplikasi MEAN saya. Dalam kasus saya, masalah itu terjadi hanya dalam satu permintaan. Saya mencoba menghapus adblock, mencoba membersihkan cache dan mencoba dengan berbagai browser. Tidak ada yang membantu.

akhirnya, saya telah menemukan bahwa api itu mencoba mengembalikan objek JSON yang sangat besar. Ketika saya mencoba mengirim objek kecil, itu berfungsi dengan baik. Akhirnya, saya telah mengubah implementasi saya untuk mengembalikan buffer alih-alih JSON.

Saya berharap expressJS untuk melempar kesalahan dalam kasus ini.


0

Masalah ini juga akan terjadi saat menggunakan beberapa paket suka webpack-hot-middlewaredan membuka beberapa halaman secara bersamaan. webpack-hot-middlewareakan membuat koneksi untuk setiap halaman untuk mendengarkan perubahan kode lalu menyegarkan halaman. Setiap browser memiliki max-connections-per-serverbatasan 6 untuk Chrome, jadi jika Anda telah membuka lebih dari 6 halaman di Chrome, permintaan baru akan digantung di sana hingga Anda menutup beberapa halaman.


0

Dalam kasus saya penyebabnya adalah ekstensi AdBlock.

Permintaan ke server melewati dan saya mendapat respons tetapi saya tidak bisa melihat cookie permintaan karena "Header sementara .." ditampilkan di alat Dev. Setelah menonaktifkan AdBlock untuk situs tersebut, peringatan itu hilang dan alat dev mulai menampilkan cookie lagi.

Agar perubahan berlaku, itu juga perlu untuk menutup alat Dev dan menyegarkan halaman

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.