■事の発端の前置き
友達と集まって、ひたすら各自でプログラムを書くという会が今日ありました。
自分はswift の基本をちまちまと前回の復習から兼ねてやっていたのですが、集中力の切れた頃にふと抽選で当たった工場見学先に行くまでの移動手段を用意していないこと、どうせ遠くに行くのなら1泊しようと思い、宿の確保もしなければいけないことを思い出しました。
ということで、インターネット使ってこのへんの手続きをちゃっちゃとやってしまおうと思いました。
■使ったサイト
じゃらん経由で日本旅行 (赤い風船)のウェブサイト。
リンクは張らない。
■事例発生
宿を決め、乗る車両を決め(JRで行くことおよび、旅館のチケットを同時にとれるサービスを選択しました。)チケット送付先を入力して「次へ」ボタンを押下。
下記のログがGoogle Chome ブラウザに表示される。
A potentially dangerous Request.Form value was detected from the client (ctl00$cphMain$txtIndividualAddress5="9−18−6 足立区...").
あれ?全角と半角が混ざってたかな?と思って再度トライしましたが、さらにひどい結果が表示されました。
(ちなみに、全角と半角は混ざっててもいい仕様になっているように見えますが試す気ないので分かりません。)
ブラウザに表示されたログの一部を下記に貼り付けます。もっと詳しい情報や他のパターンもありました。
テキストで書くと、以下の様なこんなログとかね。ちなみにこれらのログが出たページには「閉じる」ボタンのみがあり、購入手続きは継続できなくなります。ここでいままで入力したものがすべて無に帰します。
Exception Details: NTA.EC.Common.IllegalStateException: システムエラーが発生しました。お手数ですがはじめからやり直してください。
[IllegalStateException: システムエラーが発生しました。お手数ですがはじめからやり直してください。]
NTA.EC.JLN.FR.Booking.JLN_FRPage.BKPage_PreLoad(Object sender, EventArgs e) in C:\inetpub\wwwroot\EC_FP\JLN_BookingFR\src\page\JLN_FRPage.cs:152
System.EventHandler.Invoke(Object sender, EventArgs e) +0
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2866
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.237
色々試した結果、全角ハイフンや半角ハイフンではだめで、全角ダッシュでは無事に購入まで行けました。こんなことに時間をかけたくないので検証はしていません。”ー”なんて住所ではほぼ使う記号の一つだと思いますが、似たようなものがたくさんあるせいでこんな目にあうとは。。
感覚的には、全角及び半角の入力文字数の上限チェックのタイミングもおかしいような気もしますが気のせいかもしれません。
じゃらんポイントを全部使おうとすると、『100単位しか認めない』的なメッセージが速攻でるので変なところはきちんとカバーされてる分余計に頭にきます。
冷静に考えれば、とっとと楽天なり違うサイトで旅行のチケット取ればよかったんだけど、「こんなサーバーログを一般人に見せやがって!!」と憤慨していたので意地でも日本旅行サイトから登録しようと意固地になり、結果、1時間の間、ひたすら自分の名前と住所を入力するという生産性のない時間を過ごさせていただきました。
このサイト、入力情報は途中で保存できないし、一度住所書いて、確認画面までいくと修正するために戻れないというヘタレっぷり。(住所をきちんとかいても上記のようなログを吐かれるので、例として示されていた住所を入力したら通ってしまい、かつ修正出来なかったというオチ)
余談ですが、このサイトが吐き出すログをコピーしようとして、自分のタイプミスと何かの問題でGoogle Chromeの開いていたタブがすべて閉じられて消える(Chrome自体のプロセスは残ってた)という現象も食らいました。なので余計にぐったりしているのもあります。
sugi氏(すみません、twitterアカウント分からず)に教えてもらったSession Buddy を早速入れました。
Session Buddy >
https://chrome.google.com/webstore/detail/session-buddy/edacconmaakjimmfgnblocblbcdcpbko
これからとても重宝しそうです。ありがとうございます。