- 2012-02-15 (水)
- 技術
iPhoneのSafariとAndroidのブラウザ、PCのSafariとChromeでクロスドメインなAjaxを行う場合のレスポンスヘッダーで地味にハマったので、忘れないうちにメモしとく。
たいていの場合、.htaccessファイルに「Access-Control-Allow-Origin: *」を含めておけばいけまっせー!的な感じで書かれている場合が多いが、CGIとして書く場合にはもう1個だけ重要なものがあります。
それが、
Content-Length
!!
Content-Lengthが正しくないとAndroidのブラウザ、PCのChromeでAjax通信でレスポンスが返ってきてくれない。
まぁ、あんまりCGIとして書くケースはないのかもしれないのですが、.htaccessを使えないときには有効かもしれません。
Perlのコード
大体こんな感じでJSONを返すCGIを書いたときに、「Access-Control-Allow-Origin: *」と「Content-Length」 を正確に返す必要がある。
なので、以下コードでうまくいく。
Ajaxアクセス用のコード
こっちはこれだけ。
IEを考慮していないので、XDomainRequestは無視しています。
また、ちょっと古い記事ですが、クロスドメインなAjaxに対応したブラウザをご覧になりたい場合は、XMLHttpRequest level2に対応しているブラウザまとめをば。
初めてのPerl 第5版
posted with amazlet at 12.02.15
Randal L. Schwartz Tom Phoenix brian d foy
オライリージャパン
売り上げランキング: 30529
オライリージャパン
売り上げランキング: 30529
- Newer: githubのgh-pagesブランチを使って自作サイトを表示する方法
- Older: MacOSX LionにPhoneGapをインストールしたときのメモ(2012-02-09時点) - iPhone/Android対応
Trackback:0
- TrackBack URL for this entry
- http://hisasann.com/cgi-bin/mt/mt-tb.cgi/1283
- Listed below are links to weblogs that reference
- クロスドメイン用のHTTPレスポンスヘッダー - Perlスクリプト版 from HouseTect, JavaScriptな情報をあなたに


