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

transmission-tower-1017155_1280
LINEで送る
Share on GREE
Share on LinkedIn

総務省データをページ内で閲覧するサービスを作った時、csvデータのアクセスがエラーで進まなかった。
 

どうやら、アクセス元のサーバー、今回でいうと総務省のサーパーにアクセス許可処理をしないといけないのだが、昨今のサーバーはデフォルトで禁止の設定になっている。
 

しかし、ブラウザでは、ダイレクトurlで問題なくダウンロードできるのだから、何のためのセキュリティなのかということ。
 

そもそも、サイトの規約で、ajaxアクセスを禁止するような文面もないということは、とりあえずはダウンロードに関しては、やること自体問題ないはず。
 

そしてphpでfile_get_contents関数でやってみると、またダメ。
でも、ヘッダーを付けたら、問題なく取得出来る。

対応方法

こうなれば、サーバーを1台用意し、それを中継するajax処理にすればいいじゃない。
 

という事で、下記のような構成に変更。
 

注意点

それぞれのソースコードを書いておくが、注意点としては、これは、踏み台サーバーなので、改めてアクセス元のや、接続先、何かしらの証明を行うべきである。

中継サーバーで、セッション処理をして、webサーバー側のセッションと連携するとか、すると、心配なくなるだろう。

あと、getじゃなくてpostにする事で、簡易な踏み台扱いはできなくなるはず。

クローラーと組み合わせれば、かなり使える機能になるかもね。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です