Fiddlerでクロスドメイン制約を回避してlocalhostと通信する
ちょっと一般公開されているWebサイトから、クロスドメイン制約を回避してlocalhostと通信したくなりました。
そんな時にWindows用デバッグプロキシであるFiddlerが便利なんですよ。
FiddlerScriptに以下を追記して必要なヘッダーを追加します。
なんとこれ、今では黒歴史感がハンパないJScript.NETらしいです。
static function OnBeforeResponse(oSession: Session) { /* 省略 */ oSession.oResponse["Access-Control-Allow-Origin"] = "*"; oSession.oResponse["Access-Control-Allow-Headers"] = "*"; oSession.oResponse["Access-Control-Allow-Methods"] = "*"; }
既に該当ヘッダーがある場合は上書きしてくれます。
しかし対象ページがHTTPSで配信されている場合、そこからXMLHttpRequestでHTTPリクエストを送信することはできません。
localhost(Sinatra + WEBrick)はHTTPで配信しているので、これでは弾かれてしまいます。
そこで、今度はlocalhost宛のHTTPSリクエストをHTTPにリダイレクトさせましょう。
static function OnBeforeRequest(oSession: Session) { /* 省略 */ if (oSession.HTTPMethodIs("CONNECT")) { oSession.oFlags["X-ReplyWithTunnel"] = "Fake for HTTPS Tunnel"; return; } if (oSession.isHTTPS && oSession.HostnameIs("localhost")) { oSession.fullUrl = oSession.fullUrl.Replace("https://", "http://"); } }
同じように既存メソッドに追記してやります。
CONNECTメソッドに関しては、このように記述することでAutoResponder相当の動作をしてくれるそうです。