互換性表示だとIE11でコンテンツタイプが送信されないみたい

問題の事象と切り分け

PMP試験が終わり、そろそろ受験勉強管理システム(仮称)を使って娘の算数を見ようかなと。

ASUS ZenBook 3 UX390UAより画面が大きいHP ENVY 17 r000から受験勉強管理システムを初めて使ってみました。とりあえずブラウザはEdgeを利用し問題を登録し、印刷(PDF出力)すると、「開く」の選択肢がなく、「保存」「名前を付けて保存」「キャンセル」の3つしかありません。

2017-09-30 (1)

とりあえず「保存」を選ぶと、続いて「開く」「フォルダーを開く」「ダウンロードの表示」の選択肢が出るので、「開くを選ぶと、PDFがXChange EditorでなくEdgeで開かれました。2017-09-30 (2)

なお、ダウンロードフォルダに「問題.pdf」が保存されています。

2017-09-30 (3)


EdgeではPDFを扱いにくいので、いつもどおりIE11で受験勉強管理システムを使うことに。


問題を登録するとこころで、下図のようなPNG画像をアップロードしたところ・・・

イメージ609


コンテンツタイプがPNGじゃない!のようなエラーが出たわけです。あれ?KIOKUでのスクリーンショットの保存形式をJPEGにしたか?と確認しましたが、間違いなくPNGで保存しています。

受験勉強管理システムではアップロード可能な画像形式をPNGに限定しています。

イメージ011


受験勉強管理システムをいつも使っているASUS ZenBook 3 UX390UAのIE11から、同じ画像をアップロードしたところ、問題なくアップできました。よって、アップするデータの問題ではないです。


原因調査

プログラムを確認することに。

2017-09-30



    Private Sub FormView問題_ItemUpdating(sender As Object, e As FormViewUpdateEventArgs) Handles FormView問題.ItemUpdating

        SDSget問題.UpdateParameters.Remove(SDSget問題.UpdateParameters("MODE"))
        If FileUpload添付.HasFile = True Then
            SDSget問題.UpdateParameters.Add("MODE", "1")
            Dim CT As String = FileUpload添付.PostedFile.ContentType.ToString
            Dim FN As String = IO.Path.GetFileName(FileUpload添付.PostedFile.FileName.ToString)
            Dim SZ As Double = FileUpload添付.PostedFile.ContentLength
            Dim EX As String = IO.Path.GetExtension(FileUpload添付.PostedFile.FileName.ToString)
            Select Case True
                Case CT <> "image/png" And CT <> "application/pdf" And CT <> "image/jpeg" And CT <> "application/vnd.openxmlformats-officedocument.wordprocessingml.document" And CT <> "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" And CT <> "message/rfc822"
                    ラベルセット(99, "PDF、mht、WORDまたはEXCEL以外はアップロードできません(コンテンツタイプ判定)")
                    e.Cancel = True
                Case LCase(EX) <> ".xlsx" And LCase(EX) <> ".pdf" And LCase(EX) <> ".docx" And LCase(EX) <> ".png" And LCase(EX) <> ".jpg" And LCase(EX) <> ".jpeg" And LCase(EX) <> ".jpg" And LCase(EX) <> ".mht"
                    ラベルセット(98, "PDF、mht、WORDまたはEXCEL以外はアップロードできません(拡張子判定)")
                    e.Cancel = True
                Case SZ > 5120000
                    ラベルセット(97, "アップロードファイルは5MBまでです")
                    e.Cancel = True
                Case Else
                    Dim str区分 As String
                    If CT = "image/png" Then
                        str区分 = "問題画像メイン"
                    Else
                        str区分 = "添付ファイル"
                    End If
                    SDSget問題.UpdateParameters.Remove(SDSget問題.UpdateParameters("コンテンツタイプ"))
                    SDSget問題.UpdateParameters.Add("コンテンツタイプ", CT)
                    SDSget問題.UpdateParameters.Remove(SDSget問題.UpdateParameters("ファイル名"))
                    SDSget問題.UpdateParameters.Add("ファイル名", FN)
                    SDSget問題.UpdateParameters.Remove(SDSget問題.UpdateParameters("ファイルサイズ"))
                    SDSget問題.UpdateParameters.Add("ファイルサイズ", SZ)
                    SDSget問題.UpdateParameters.Remove(SDSget問題.UpdateParameters("拡張子"))
                    SDSget問題.UpdateParameters.Add("拡張子", EX)
                    SDSget問題.UpdateParameters.Remove(SDSget問題.UpdateParameters("区分"))
                    SDSget問題.UpdateParameters.Add("区分", str区分)
                    SDSget問題.UpdateParameters.Remove(SDSget問題.UpdateParameters("コメントバイナリ"))
                    SDSget問題.UpdateParameters.Add("コメントバイナリ", TextBoxコメントバイナリ.Text)
            End Select
        Else
            SDSget問題.UpdateParameters.Add("MODE", "0")
        End If

    End Sub

ど素人丸出しのコードではありますが、問題ないです。

何が違うのか?小1時間ほど悩みます。グーグル先生にもすがってみます。

そうしたら、IE11でPOSTを再送信した場合にContent-Typeが欠落する現象についてなんていうMSのフォーラム発見。再送信ではないけれど、それっぽいなとよく読んで、書かれていることをやってみたりするのですが、解決しません。

IEをリセット、IE11を機能の無効化→有効化、受験勉強管理システムのサーバを信頼済サイトへ登録など、いろいろやってみましたがダメです。


解決

おなかすいたので、ランチして気分を切り替えます。


F12開発者ツールのネットワークで調べてみることに。するとエミュレーションのところがIE7になっています。ん?と思い、IE11に変更し、画像をアップするとできるじゃないですか!

原因は互換性表示か!互換性表示だと、コンテンツタイプが送信されないようです。

下図はコンテンツタイプがサーバに送信されない状況のIE11の設定です。受験勉強管理システムは自宅のLAN(イントラネットサイト)なので、「イントラネットサイトを互換性表示する」にチェックがついていると受験勉強管理システムは互換性表示されてしまします。

イメージ010


この状態だと下図のようになってしまいます。

イメージ011


「イントラネットサイトを互換性表示する」をオフにすることで、IE11からサーバへコンテンツタイプが送信されるようになりました。下図のように問題画像が登録できるようになりました。

イメージ012


「イントラネットサイトを互換性表示する」に何故チェックがついていたのか?

別のWebアプリ作成過程でつけたと思われます・・・・

コメント

このブログの人気の投稿

ダブルクォーテーションで括られたCSVカ​ンマ区切りテキストファイルを SQL Server で Bulk Insert する方法

PowerShellでTSV/CSVの列を絞り込んで抽出し、(先頭/行末)からN行出力する

IKEAの鏡を壁に取り付ける