Ajaxのクロスオリジンドメインセキュリティに困ったら中継サーバーを立てれば良い

2018年1月15日

Javascript テクノロジー プログラミング

総務省データをページ内で閲覧するサービスを作った時、csvデータのアクセスがエラーで進まなかった。 どうやら、アクセス元のサーバー、今回でいうと総務省のサーパーにアクセス許可処理をしないといけないのだが、昨今のサーバーはデフォルトで禁止の設定になっている。 しかし、ブラウザでは、ダイレクトurlで問題なくダウンロードできるのだから、何のためのセキュリティなのかということ。 そもそも、サイトの規約で、ajaxアクセスを禁止するような文面もないということは、とりあえずはダウンロードに関しては、やること自体問題ないはず。 そしてphpでfile_get_contents関数でやってみると、またダメ。 でも、ヘッダーを付けたら、問題なく取得出来る。

対応方法

こうなれば、サーバーを1台用意し、それを中継するajax処理にすればいいじゃない。 という事で、下記のような構成に変更。 <?php header("Access-Control-Allow-Origin: *"); $data = file_get_contents($_REQUEST["url"]); // 総務省のcsvダウンロード専用エンコード処理 $enc = "SJIS"; $data = mb_convert_encoding($data , "UTF-8" , $enc); echo $data; exit();

注意点

それぞれのソースコードを書いておくが、注意点としては、これは、踏み台サーバーなので、改めてアクセス元のや、接続先、何かしらの証明を行うべきである。 中継サーバーで、セッション処理をして、webサーバー側のセッションと連携するとか、すると、心配なくなるだろう。 あと、getじゃなくてpostにする事で、簡易な踏み台扱いはできなくなるはず。 クローラーと組み合わせれば、かなり使える機能になるかもね。

人気の投稿

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。

ブログ アーカイブ