Chromeデバッガーで「注意:暫定ヘッダーが表示されます」


399

Google Chromeインスペクター(F12)を使用してダウンロードしたリソースを見ると、奇妙な警告メッセージが表示されました。

注意暫定ヘッダーが表示されます

ここに画像の説明を入力してください

ネットワークパネルに関連する可能性があるものを見つけました。暫定リクエストヘッダーに関する注意を追加しましたが、完全には理解できませんでした。関連する質問は、ChromeのブロックリクエストXMLHttpRequestが読み込めないことです。アンロードされたリソースには注意が表示されます。暫定的なヘッダーが表示されます。

最初の質問と同様に、私のリソースはブロックされましたが、後で同じリソースが自動的に読み込まれました。2番目の質問とは異なり、何も修正したくありません。このメッセージの意味と受信した理由を知りたい。


3
この問題は、www.domain.tldからdomain.tldに、またはその逆にajaxを介してデータを送信するなど、ドメインの切り替えが原因でreuqestが送信されなかった場合にも発生する可能性があります。
Andre Baumeier、2014年

@wvegaこのSOの質問には同様の問題が投稿されていますが、この暫定ヘッダー送信問題について考えられる説明はないようです。これに対する具体的な解決策はありますか?本当に忌々しい!私は以前にこの質問を投稿しました。
webblover 2014年

1
@webblover wvegaによる良い説明があります。そして、私は実際に解決策を探していませんでした。理由が知りたくて。
サルバドールダリ

私はそれをオフにしたときにそれは私を助けた:chrome://flags/#site-isolation-trial-opt-out
ИльяЗеленько

私の答えを読んで、複雑なように見えるとして、それはないです:stackoverflow.com/questions/21177387/...を
csandreas1

回答:


353

リソースは拡張機能(私の場合はAdBlock)によってブロックされている可能性があります。

そのリソースを取得する要求が行われなかったためメッセージが表示されているため、表示されているヘッダーは実際のものではありません。参照した問題で説明したように、サーバーが応答すると実際のヘッダーが更新されますが、要求がブロックされた場合は応答がありません。


リソースをブロックしている拡張機能について私が見つけた方法は、Chromeのnet-internalsツールを使用することでした。

Chromeの最新バージョン

  • 入力しchrome://net-export/たアドレスバーに入力しますとヒット。
  • 録音を開始。そして、録音ファイルをローカルに保存します。
  • 問題が発生しているページを開きます。
  • net-internalsに戻る
  • 記録されたログファイルは、https://netlog-viewer.appspot.com/#importで確認できます
  • イベント(###)をクリックし、テキストフィールドを使用して、リソースに関連するイベントを見つけます(URLの一部を使用)。
  • 最後に、イベントをクリックして、表示された情報が何かを教えてくれるかどうかを確認します。

古いバージョンのChromeの場合

  • 入力しchrome://net-internalsたアドレスバーに入力しますとヒット。
  • 問題が発生しているページを開きます。
  • net-internalsに戻り、イベント(###)をクリックし、テキストフィールドを使用して、リソースに関連するイベントを見つけます(URLの一部を使用)。
  • 最後に、イベントをクリックして、表示された情報が何かを教えてくれるかどうかを確認します。

7
シャズの答えは良いです。コンテンツが変更されたかどうかをサーバーに問い合わせることなく、ブラウザーのキャッシュからリソースが取得されると、デバッガーにこのメッセージが表示されます。
Maor

4
私は両方の答えが正しいと思います、彼らは同じ物語の両面を伝えます。このメッセージは、リクエストがブロックされたとき、またはリソースがキャッシュから読み込まれたときだけでなく、すべてのリクエストが開始された後、ブラウザがサーバーからの応答を待っている間にも表示されます。応答が到着するとすぐにメッセージは消え、実際のヘッダーが表示されます。
ウィリントンベガ2014

2
たとえば、example.com / a-> 301-> example.com/bなどの最初に分析されたページがリダイレクトされ、ターゲットページが200で応答した場合、インスペクターでターゲットページ/ bをクリックしてヘッダーデータを表示します。 、「暫定ヘッダーが表示されます」というラベルの付いたそれらを取得します。ターゲットページを直接分析しないため、これは正しいです。これを行うと、ラベルなしでヘッダーデータが取得されます。
エフゲニー2015年

1
上記を行ったとき、これが私の問題であると判断できました。私のhttpsサイトは、httpページへの302リダイレクトを行っていたhttps cssファイルを呼び出していました。セキュリティはファイルの読み込みを許可せず、暫定ヘッダーのみを表示しました。
Steropes

1
これが起こることがあり、なぜ複数の理由の非常に良い説明があります:stackoverflow.com/questions/12009423/...
boldnik

112

実際のリクエストが送信されていないときに発生すると思います。通常、キャッシュされたリソースをロードしているときに発生します。


61
いいえ、変更されていない304は、条件付き要求に応答してサーバーから送信されます。キャッシュされたリソースをロードしていて、ブラウザーがサーバーに接続する必要がない場合、HTTPリクエストが行われないため、304が変更されていないか、HTTPステータスがまったく表示されません。
thomasrutter 2014年

7
これは私にとってはうまくいきます。デバッガーパネルに「暫定ヘッダーが表示されている」と表示されたとき、リクエストのステータスコードは「200 OK(キャッシュから)」でした
richie

3
これはサービスワーカーの応答で見たので、少なくとも一部のケースでは、キャッシュ応答は正しいと思います:)
jacoballenwood 2017

4
開発ツールでキャッシュをオフにしても、まだこのメッセージが表示されます。すべてのファイルのステータスは200で、「(キャッシュから)」はありません。したがって、キャッシュが原因である場合もありますが、常にそうであるとは限りません。
ラルフ

私の場合、キャッシュからデータをロードしています。
Aviv Lo

40

クロムv72 +の場合、私のためにそれを解決したのはこれだけでした:

chrome://flags/この3つのフラグに移動して無効にします

  • サイト分離を無効にする
  • ネットワークサービスを有効にする
  • インプロセスでネットワークサービスを実行します

ここに画像の説明を入力してください

または、コマンドラインから実行できます。

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

なぜこれが起こるのですか?

GoogleはChromiumエンジンをモジュール構造にリファクタリングしているようです。そこでは、さまざまなサービスがスタンドアロンのモジュールとプロセスに分離されます。彼らはこのプロセスをサービス化と呼びます。ネットワークサービスが最初のステップです。Uiサービス、Identityサービス、Deviceサービスが登場します。Googleは、Chromiumプロジェクトサイトで公式情報を提供しています

それを変えるのは危険ですか?

例はネットワーキングです。ネットワークサービスを取得したら、安定性/セキュリティを向上させるためにプロセス外で実行するか、リソースに制約がある場合はインプロセスで実行するかを選択できます。ソース


4
「ネットワークサービスを有効にする」と「ネットワークサービスをインプロセスで実行する」だけでこれを機能させることができました。
smalone

サイトの分離を無効にしただけでうまくいきました。
Ashrith

3
これは通常のChrome(v74)で機能しましたが、Chrome Canary(v76)の最新バージョンには "#network-service"フラグがありません...これがないと、これをCanaryで機能させることができません。
リッチ

localhost:8080google.com(!?)の両方でこの問題が発生しました。サイト分離を無効にすると、google.comは修正されましたが、localhostは修正されませんでした。他の2つのオプションのみを無効にすると、すべてのケースでそれが修正されました。
BlueRaja-Danny Pflughoeft

私はこれだけをオフにする必要がありました:クローム://フラグ/#サイト型分離公判-オプトアウト
ИльяЗеленько

25

私はこの問題に遭遇し、特定の原因を特定することができました。これは、回答でも質問でも上記に記載されていません。

SSLで完全なjsスタック、角度のあるフロントエンド、ノードのバックエンドを実行しており、APIはポート8081で実行されている別のドメインにあるため、APIからセッションCookieを削除するときにCORSリクエストとwithCredentialsを実行しています

したがって、具体的には私のシナリオは次のとおりです。ポート8081へのwithCredentialsを含むPOSTリクエストにより、インスペクタに「注意:暫定ヘッダーが表示されました」というメッセージが表示され、もちろんリクエストがすべてブロックされました。

私の解決策は、通常のSSLポート443からノードSSLポート8081にリクエストをプロキシで渡すようにApacheを設定することでした(ノードは、prodでrootとして実行できないため、より高いポート上にある必要があります)。したがって、Chromeは従来とは異なるSSLポートへのSSLリクエストを好まないのではないかと思いますが、おそらくそれらのエラーメッセージはより具体的かもしれません。


2
これはブラウザの同じ生成元のポリシーです。Webページと読み取るリソースは同じポート上にある必要があります。developer.mozilla.org/en-US/docs/Web/Security/...
r3m0t

1
助けてくれてありがとう。私はwebpacks開発サーバーを使用しており、書き換えルールを追加することができました。'/graphql': { target: 'http://10.10.1.38:4000', changeOrigin: true }
James Harrington、

同様に、create-react-appプロジェクトに追加"proxy": "http://192.168.98.110:1234"してpackage.json、この問題を解決しました。答えとは異なり、私は開発のどこでもHTTPSを使用していませんが、私のアプリとAPIが異なるIP上にあるため、これは必須でした。
chrishiestand

16

これは、サイト分離と呼ばれる新機能が原因で発生することもあります(クロスオリジンリクエストの場合のみ)。

このページでは、問題と回避策について詳しく説明しますchrome://flags/#site-isolation-trial-opt-outクロームで移動し、その設定を「オプトアウト」に変更してクロームをリロードします。

これは既知の問題です。ただし、そのページにはChrome 68で修正されていると記載されていますが、Chrome 68を実行していますが、問題は解決していません。


1
リクエストがブロックされていない(200 OK)場合、それはCORSリクエストでのみ発生し、欠落しているヘッダーはCookieです。この回答を確認してください。ありがとう、@ onlynone
semako 2018

@semako、もう少し詳しく説明してもらえますか?同様の問題が発生していますが、理由がよくわかりません。詳細については、私の最新の投稿を参照してください。ありがとうございました。
adn bps

12

上記の回答でProvisional headers are shown @wvegaが投稿したのと同じ理論で、HTTP / 2 Pushedリソースがインスペクターで生成されます

例:サーバーがリソースをクライアントにプッシュしたため(クライアントがリソースを要求する前)、ブラウザはリソースをキャッシュしているため、クライアントが要求を行う/要求することはありません。だから...

...実際のヘッダーはサーバーが応答すると更新されますが、要求がブロックされた場合は応答がありません。


12

私の状況はクロスオリジンに関連しています。
状況:ブラウザOPTIONSは、GETまたはのような実際のリクエストを送信する前にリクエストを送信しPOSTます。バックエンド開発者がOPTIONSリクエストを処理するのを忘れ、サービスコードを通過させるため、処理時間が長すぎます。axios初期設定で書き込んだタイムアウト設定(5000ミリ秒)よりも長い。そのため、実際のリクエストを送信できず、provisional headers are shown問題が発生しました。
ソリューション:それが来るときOPTIONSだけ結果を返すリクエスト、バックエンドのAPI、それはより速く要求し、タイムアウト前に送信することができ、実際の要求を行います。


6

私の答えがあなたを助ける時間内にあるとは思えませんが、他の人が役立つと思うかもしれません。私が作成したjQuery Ajax Postスクリプトで同様の問題が発生しました。

投稿の発火に使用していたAタグのhref属性にタイプミスがあることがわかりました。私は型付きのhref = "持っていたjavacsriptを:;" ( 's'と 'c'を逆にします)。これにより、スクリプトは投稿の配信を試みている間にページを更新しようとしました。タイプミスを修正し、それは私にとって完全にうまくいきました。


同じ種類の問題に遭遇しましたが、タイプミスはありませんでしたが、POSTが実行/完了する前にスクリプトでページをリロードしました。
Raindal 2014

4

このメッセージは、HSTSを使用してWebサイトが保護されている場合に発生する可能性があります。次に、誰かがHTTPバージョンのURLにリンクすると、ブラウザーはHSTSの指示に従ってHTTP要求を発行せず、内部でHTTPSリソースに安全にリダイレクトします。これは、sslstripなどのHTTPSダウングレード攻撃を回避するためです


HSTSを無効にすると、元のヘッダーが再び表示されました。ありがとうございました!
ケンバークレー

3

これは、Ajaxリクエストを送信したと同時に、location.hrefなどを使用してページを別のページにジャンプしたためと考えられます。したがって、前のリクエストは失敗しました。


2

この警告メッセージは、応答が無効であるためブラウザによってドロップされた場合にも発生します。

私の場合、リクエストがサーバーに正しく送信され、サーバー側のコードがエラーを生成し、カスタムエラー処理がHTTPステータスメッセージフィールドにエラーメッセージを返しました。しかし、このエラーはクライアント側で受信されませんでした。エラーメッセージ(http://aspnetwebstack.codeplex.com/workitem/1386で説明)に無効な文字があり、応答ヘッダーが破損していました。


2

私はこの問題に遭遇しましたが、完了しないAJAX呼び出しがありました。私はデバッグについてwvegaのアドバイスとヒントに従いchrome://net-internals、最終的に別のものを決定しましたclickページ内のイベントハンドラーをし、親ノードでリッスンしていたため、ブラウザーが同じURLに移動していました(簡単に気付かなかったため)。

解決策は、フォームの送信ボタンにハンドラーを追加event.stopPropagation()してclick、クリックがDOMを吹き飛ばしたり、進行中のAJAXリクエストをキャンセルしたりしないようにすることでした(のsubmitハンドラーを介して開始form)。


2

私はこれをごく最近(実際には今日)発生させており、AJAX呼び出しをサーバーに送信させたところ、「注意:暫定ヘッダーが表示されます」というメッセージが表示されます。サーバー側のPHPスクリプトには、指定されたシナリオに応じて、ほとんど瞬時に、または数秒かかるMySQLクエリがあります。クエリが完了するまで、サーバーの応答がブラウザーに返されません。このエラーが発生するのは、時間のかかるクエリ(合計で最大数秒)が実行され、応答が返されない場合のみです。

私のシナリオでは、気象モデルの出力用に数百の列を追加または削除してテーブルを変更しなければならないという非常にまれな可能性があります。そのため、ALTER TABLEクエリのループを反復することによる応答ラグがあります。


PHP労働者は、多分あなたのためのものになるだろう
パルトロミエザレウスキー

2

これが発生する一般的な理由は、イベントを追跡していて、デフォルトのアクションを妨げない場合です。たとえば、クリックイベントがある場合は、次のものを含めます。

e.preventDefault();

または

return false;

そうしないと、Webコンソールの[ネットワーク]タブに暫定ヘッダーの警告と「キャンセルされた」ステータスが表示されます。


2

私の場合、それはリソース(svg / img)への誤ったセットパスでした


はい-私にとって、リクエストにファイル入力を使用するときに権限がありません。
phil294 2018

2

この問題は、無効なHTTP Authorizationヘッダーを送信したときに発生しました。base64でエンコードするのを忘れました。


1
私のケースは、Authorizationヘッダーが長すぎるということでした
Agorilla '25

1

私はこれに遭遇し、httpsからhttpに切り替えたときに消えました。開発で使用するSSL証明書は、サードパーティによって検証されていません。ローカルで生成された開発者証明書です。

同じ呼び出しはChrome CanaryとFirefoxでも問題なく機能します。これらのブラウザは、ChromeほどSSL証明書に厳格ではないようです。Chromeでは、「注意:暫定ヘッダー...」というメッセージが表示されて呼び出しが失敗します。

ステージと製品で正規のSSL証明書を使用すると、Chromeでこの動作が見られなくなると思います。


私はカールしようとし、60を受け取りました。この回答から、SSLインストール時に不足しているチェーンを見つけます。チェーンを追加して問題は解消しました。ありがとう、相棒!これを使用して確認してください:curl -s -D- https:// <yourcomain.com>
apis17

1

ちょうど私の2セントを投入します。CORSリクエストと完全なRESTful Webサービスを使用してWebアプリケーションを作成しています。ハンドレス例外またはPHPエラーがスローされたときに、chromeがこのエラーをスローすることがわかりました。他の誰かが問題に遭遇した場合に備えて。これが発生すると、Chromeアプリ「Postman-Rest Client」を起動してまったく同じリクエストを実行できることがわかりましたが、Chromeアプリでは、この非説明的なエラーの代わりに実際にはPHPエラーがスローされます。


1

エラーの結果として変更を加えた後、2回目にrequire jsのmain.jsをロードしようとしたときにこの問題を実行しました。開発者ツールの設定「キャッシュを無効にする(DevToolsが開いている場合)」でオンにしました。それが魅力だった。


「キャッシュを無効にする(DevToolsが開いている間)」を有効にしているため、Chrome開発ツールが開いているときにhtml5ビデオが読み込まれないという同様の問題がありました。設定を無効にすることで問題は解決しました。
Anth12 14

1

私が見た別の可能なシナリオ-まったく同じ要求が数ミリ秒後に再び送信されています(おそらくクライアント側のバグが原因です)。
その場合、最初のリクエストのステータスが「キャンセル」され、待ち時間が数ミリ秒しかないこともわかります。


1

これは私に起こっていました。ダウンロードリンクがあり、それをクリックした後、jqueryでクリックをキャッチしてajaxリクエストを送信しようとしていました。問題は、ダウンロードリンクをクリックすると、ページが表示されていなくても、ページを離れることです。ファイル転送がない場合は、要求されたページが表示されます。そこで、この問題を防ぐためにtarget = "_ blank"を設定しました。


1

ポップアップでページを印刷しようとしたときにこのエラーが発生しました。印刷ダイアログが表示され、マスターページで別のリンクをクリックしようとすると、暫定ヘッダーが表示されるというメッセージを示すバックグラウンドで待機している間に、ポップアップで印刷の承認またはキャンセルがまだ待機しています。

私の場合、解決策は、印刷ダイアログを防ぐためにポップアップウィンドウでwindow.print ();実行されていたスクリプトを削除することでした<body>


1

サーバーへの接続数がChromeのmax-connections-per-server制限である6を超えたときに、これが発生するのを確認しました。


1

あなたのコードのこのコード拳を使用してください:

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

これでうまくいきます。


0

これが別の解決策です。

$ ajax()呼び出しでこの問題が発生した場合はhttp://、サーバーホストが問題を解決する前に追加してください。

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

0

Asp.Net Mvcアプリケーションを開発していJsonResultて、コントローラーでを返そうとしている場合は、必ずメソッドに追加JsonRequestBehavior.AllowGetしてくださいJson。これで解決しました。

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

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

0

「注意:暫定ヘッダーが表示されます」というメッセージは、HTTPSでホストされているWebサイトがHTTPでホストされているWebApiの呼び出しを呼び出すと表示されることがあります。すべてのAPIがHTTPSであるかどうかをすべて確認できます。ブラウザは、安全でないリソースへの呼び出しを防ぐ。HTTPでドメインにFETCH APIを使用すると、コードに同様のメッセージが表示されます。

混合コンテンツ:「https://website.com」のページはHTTPS経由でロードされましたが、安全でないリソース「http://webapi.com」を要求しました。このリクエストはブロックされました。コンテンツはHTTPS経由で提供する必要があります。


0

MEANアプリでも同様の問題がありました。私の場合、問題は1つのgetリクエストでのみ発生していました。私はadblockを削除してみて、キャッシュをクリアしてみて、さまざまなブラウザーで試しました。何も役に立たなかった。

最後に、APIが巨大なJSONオブジェクトを返そうとしていることがわかりました。小さなオブジェクトを送信しようとしたところ、問題なく動作していました。最後に、JSONの代わりにバッファを返すように実装を変更しました。

この場合、expressJSがエラーをスローすることを望みます。


0

この問題は、いくつかのパッケージを使用webpack-hot-middlewareして同時に複数のページを開いているときにも発生します。webpack-hot-middleware各ページの接続を作成して、コードの変更をリッスンし、ページを更新します。各ブラウザーには、max-connections-per-serverChromeで6の制限があります。そのため、Chromeですでに6ページを超えるページを開いている場合、いくつかのページを閉じるまで、新しいリクエストがそこでハングします。


0

私の場合、原因はAdBlock拡張機能でした。

サーバーへのリクエストは通過しましたが、応答は得られましたが、Devツールに「Provisional headers ..」が表示されているため、リクエストのCookieが表示されませんでした。サイトのAdBlockを無効にした後、警告はなくなり、開発ツールはCookieを再び表示し始めました。

変更を有効にするには、開発ツールを閉じてページを更新することも必要でした

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.