質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Internet Explorer

Internet Explorer(IE;MSIE)はマイクロソフトが開発したウェブブラウザです。Microsoft Windowsに組み込まれています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

3回答

15059閲覧

IE11で再ロード(F5)時にPOSTデータが欠落する現象

allll

総合スコア42

Internet Explorer

Internet Explorer(IE;MSIE)はマイクロソフトが開発したウェブブラウザです。Microsoft Windowsに組み込まれています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2017/02/20 08:45

編集2017/02/20 12:52

###不具合内容
一部Win7端末のIE11で、PHPへのPOST後に正常表示を行い
F5キーでリロード時に、POSTデータの再送信を受け取れず
正常に表示できないという不具合が起きています。
(Win10では確認できず)

Microsoft情報から、HTTPリクエスト時のContent-Typeが欠落することがあるとのことで
ヘッダを確認したところ、異常時にContent-Typeが欠落していました。

Internet Explorer 11 で POST リクエストを再送信する場合 Content-Type が欠落することがある

Content-Typeが欠落したことにより
サーバ側でHTTPリクエスト内容の解釈ができず
POSTデータが破棄されているものと思われます。

回避策:保護モードの切り替わりを無くす、と書かれていますが
解決せず、困っております。

【環境】
Windows 7 Pro SP1
IE 11.0.9600.18537IS (更新11.0.38(KB3203621))

###検証結果
下記の設定を行った場合は、正常に表示されます。

・セキュリティゾーン → 信頼済みサイトに登録 → ローカルイントラネットに登録 ・互換表示設定に登録 ・F12で開発者ツールを起ち上げた状態(エミュレーションモードはEdgeと表示)

下記の設定では、不具合現象は解決しませんでした。
上記Microsoftの情報より、保護モードが焦点になっていたため実施

セキュリティゾーン → インターネットゾーンの保護モードを無効化(default:有効) → 信頼済みサイトゾーンの保護モードを有効化(default:無効)

###質問内容
一般的なWebシステムですので
IEの設定を変更しないで対応したいと考えております。
この現象について、何か情報をお持ちの方がいらっしゃいましたら
教えて頂けないでしょうか。

よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

allll

2017/02/23 09:31 編集

ご指摘の通り、マルチポストの状態でした。申し訳ありません。Internet Explorerに関する直接的な回答が得られなかったので、こちらの質問はクローズさせて頂きました。よろしくお願い致します。
guest

回答3

0

POSTを再送信する前提のページなのでしょうか?
あえてやるならPOSTされたらセッションに押し込めて
完了ページに移動してしまうとかどうでしょうか?

sample

補足見ましたがF5で再送信する意味がわかりません。
F5を押す人がいるのは別に否定しませんが、
ブラウザが再送信を拒否しているのが仕様やバグなら
どうしようもないと思いますが・・・

とりあえず、sampleだけ

  • x.php

PHP

1<form method="post" action="y.php"> 2<input type="text" name="a" value="hoge"> 3<input type="submit" value="post"> 4</form> 5<form method="get" action="y.php"> 6<input type="text" name="a" value="fuga"> 7<input type="submit" value="get"> 8</form> 9
  • y.php

PHP

1<?PHP 2session_start(); 3if(isset($_POST["a"])){ 4 $_SESSION["a"]=$_POST["a"]; 5 header("Location:z.php"); 6 exit; 7} 8header("Location:x.php"); 9exit; 10?>
  • z.php

PHP

1<?PHP 2session_start(); 3print $_SESSION["a"]; 4?>

あとはz.php上で好きなだけF5を押せばいいと思います

投稿2017/02/20 09:34

編集2017/02/21 02:31
yambejp

総合スコア114835

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

allll

2017/02/20 09:47

客先の文化でF5を使用する人が多いとのことで要求されています。 POSTの再送信が前提のページとなります。
guest

0

POST 元の画面と、そこから実際にデータを POST する先とが、別のドメインだったりしてませんか?
この場合、POST 元のセキュリティレベルと POST 先のセキュリティレベルが異なっている(信頼済みサイトから信頼のないサイトへなど)と、この症状が起きる、のではないでしょうか。

この場合の対応策としては、IE11 の設定として、

  • 信頼済みサイトとして、POST元もPOST先も設定する

になるのではないでしょうか。

これが不可能であれば、ちょっと面倒ですが、POST 元と同じドメイン内に POST を受けて、それを本来の POST 先へ再POSTするプログラム(POSTプロキシとでも名付けますか)を用意するとかですかねえ。
※違うドメインへの POST を IE が行うとダメならば、IEからは同一ドメインへ送るようにする

(追記)
よく情報元を見たら、ブラウザヘルパーオブジェクト(広告遮断やGoogleツールバー、Adobe Acrobat プラグインなんかも)が入っていると、同一ドメインでさえ発生しうる、のですね。
これらをインストールさせない、という手は取りづらいと思われるので、上の POST プロキシで Content-Type が欠落していても大丈夫なように補正してやるくらいしかないかなあ。

投稿2017/02/20 09:55

編集2017/02/20 10:04
tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

allll

2017/02/20 10:30 編集

ご回答頂き、ありがとうございます。 POST元、先ともに同一ドメインです。 なお、信頼済みサイトについては検証結果に記載の通りとなります。 POSTプロキシ案ですが、そもそもContent-Textが欠落している以上 POSTデータを受け取ることは難しいと考えております。
tacsheaven

2017/02/20 10:52 編集

問題は Windows7 上の IE11 の動作に起因するので、回避策としては IE11 の設定を変える以外にはないと思いますよ。 なお、Content-Type は厳密には必須のヘッダではない(定義は「含まれるべきである(SHOULD)」であって、「含まなければならない(MUST/REQUIRED)」ではない)ので、Content-Type がないからと言って POST データを受け取れないわけではありません(どんなフォーマットのデータだかわからないだけで。ちなみにこの場合は application/octet-stream として扱うべきとなっています)。専用のPOSTプロキシであれば事前に何を受け取るかわかっているので、Content-Type を補正できるはずです。
guest

0

自己解決

Internet Explorer 11に関する直接的な回答が得られませんでしたので
解決済みとさせて頂きます。
継続して調査を行っておりますので、新たな情報が得られた場合はこちらに記載します。

※追記
調査を継続したところURLがHTTP接続の場合、本現象が発生しますが
HTTPSでは発生しないことが分かりました。

「IEのバグだからしょうがない」という回答がありましたが
POSTデータが受け取れず、原因さえも分からない方が必ずいると思います。
継続して調査を行います。

投稿2017/02/23 06:45

編集2017/02/23 09:35
allll

総合スコア42

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2017/02/23 08:13

どのように解決したかコードを回答欄に追記いただけませんか?このページに辿り着いた同じ疑問を持つ人のために、ぜひお願いします。
allll

2017/02/23 08:55

kei344さん、不手際があり大変失礼いたしました。ご確認のほど、よろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問