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

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

ただいまの
回答率

90.53%

  • PHP

    23545questions

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

  • JavaScript

    19891questions

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

  • HTML

    11130questions

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

  • Internet Explorer

    329questions

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

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

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 5,330

allll

score 36

不具合内容

一部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の設定を変更しないで対応したいと考えております。
この現象について、何か情報をお持ちの方がいらっしゃいましたら
教えて頂けないでしょうか。

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • キャンセル

  • allll

    2017/02/23 18:30 編集

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

    キャンセル

回答 3

check解決した方法

0

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

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

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/02/23 17:13

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

    キャンセル

  • 2017/02/23 17:55

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

    キャンセル

0

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

 sample

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

とりあえず、sampleだけ

  • x.php
<form method="post" action="y.php">
<input type="text" name="a" value="hoge">
<input type="submit" value="post">
</form>
<form method="get" action="y.php">
<input type="text" name="a" value="fuga">
<input type="submit" value="get">
</form>
  • y.php
<?PHP
session_start();
if(isset($_POST["a"])){
  $_SESSION["a"]=$_POST["a"];
  header("Location:z.php");
  exit;
}
header("Location:x.php");
exit;
?>
  • z.php
<?PHP
session_start();
print $_SESSION["a"];
?>

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/02/20 18:47

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

    キャンセル

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 19:28 編集

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

    キャンセル

  • 2017/02/20 19:46 編集

    問題は Windows7 上の IE11 の動作に起因するので、回避策としては IE11 の設定を変える以外にはないと思いますよ。

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

    キャンセル

同じタグがついた質問を見る

  • PHP

    23545questions

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

  • JavaScript

    19891questions

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

  • HTML

    11130questions

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

  • Internet Explorer

    329questions

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