2017年1月29日日曜日

Ubuntuをアップデートしたら、400エラーが出るようになる

 結論から言うと、原因はJSPの中のjavascriptで、HTMLリクエストパラメータを全角文字などもそのまま送信していたのが原因でした。
 これまで、全角文字もそのまま送信していて問題はおきなかったのは、ブラウザ側あるいはtomcat?でうまく処理していてくれたためと思う。

 tomcatあるいはjavaあたりをアップデートした影響で、URLエンコードしてない影響がIE11にだけ現れたようだ。このへんの関係を発見するまで時間がかかった。

 400エラーが出るのは、IE11だけである。chromeやEdgeでは特に問題は起こってない。

 encodeURIにより、URLエンコードするだけで問題が解決した。デコードはとくにしなくても、だいじょうぶなようだ。ネットで検索しても、こういった症状が出てこなかったのは、基本的ミスだったからともいえる。

***************解決までの流れ
①Ubuntuサーバで、突然、IE11を使ったとき、全角のファイル名のときだけ、ダウンロードできなくなる。400エラーが出る。
②Vmware内の古いUbuntuサーバについては問題ない。試しにapt-get update
 すると、同じ症状が出る。原因はtomcatかjavaの影響?IE11との相性?いずれか、と考えた。
 ネットでは、IE11のUserAgentの文字がTridentに変わったことが、出ていたので対応させてみた。
 でも、これとは無関係だった。しばらく解決策がみつからない。
③他のリクエストパラメータを使うGETのところで、同じ症状(400エラー)が出ることを発見。
④③よりひょっとして、URLエンコードしていないのが原因でないかと疑う。試しにエンコードするように修正したら解決した。

※原因を見つけるには、試行錯誤しながら、考えるしかないようだ。

0 件のコメント:

コメントを投稿