更新
- WebsocketのPROXY設定を追加
発端
株コム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
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
2. Listen ポートを2つ用意
Listen 28080
Listen 28081
3. リバースプロキシ定義を導入
<VirtualHost *:28080>
ProxyRequests Off
ProxyPass /kabusapi/websocket ws://localhost:18080/kabusapi/websocket
ProxyPassReverse /kabusapi/websocket ws://localhost:18080/kabusapi/websocket
ProxyPass / http://localhost:18080/
ProxyPassReverse / http://localhost:18080/
</VirtualHost>
<VirtualHost *:28081>
ProxyRequests Off
ProxyPass /kabusapi/websocket ws://localhost:18081/kabusapi/websocket
ProxyPassReverse /kabusapi/websocket ws://localhost:18081/kabusapi/websocket
ProxyPass / http://localhost:18081/
ProxyPassReverse / http://localhost:18081/
</VirtualHost>
結果
これにより、別PCの自作ReactサイトからCORSの制限を超えつつ、APIと通信ができた。
※自作サイトからのアクセス。ここでは、JavaScriptのfetchAPIから、WindowsPCの28081ポートに対して、kabu station API の認証を通しています。