KabuStationAPIを他サーバからリバースプロキシ利用して利用する


発端

株コムAPIは、Windowsアプリのkabuステーションをローカル起動している際にのみ利用可能であり、一般公開されているAPIではない。
仕組み的にはkabuステーション起動中のみ、localhost:18081(開発),localhost:18080(本番)のサーバが起動される。

この二つのサーバプロセスは、きっちりCORSが適用されており、ブラウザからは、このWindows上のIPを指定して、リクエストを送ってもCORSによって弾かれる。

kabu station api

目的

他PC(Ubuntu)のブラウザ(主にReact等のJS)からもアクセスしたかったので、この制限を乗り越えて利用できる環境構築を行う。

対応

Apacheの導入。
Apacheのリバースプロキシ機能を使い、この制限をクリアする。

具体的には、以下の対応を実施。
すべて、httpd.confに対する記述である。

1. モジュール有効化

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

2. Listen ポートを2つ用意

Listen 28080
Listen 28081

3. リバースプロキシ定義を導入

<VirtualHost *:28080>
    ProxyRequests Off
    ProxyPass / http://localhost:18080/
    ProxyPassReverse / http://localhost:18080/
</VirtualHost>

<VirtualHost *:28081>
    ProxyRequests Off
    ProxyPass / http://localhost:18081/
    ProxyPassReverse / http://localhost:18081/
</VirtualHost>

結果

これにより、別PCの自作ReactサイトからCORSの制限を超えつつ、APIと通信ができた。

※自作サイトからのアクセス。ここでは、JavaScriptのfetchAPIから、WindowsPCの28081ポートに対して、kabu station API の認証を通しています。