One IT Thing

IT業界を楽しむ為の学習系雑記

nodejs

http-serverコマンドでHTTPS、CORSサーバをたてる

投稿日:

「フロントエンドをHTTPS化してHTTP公開しているREST APIに接続したい、でも自分のPCにApacheやNginxを入れてHTTPS化するのは面倒くさい」

開発中ってこういうニーズと悩みが結構多いです。HTTPS環境化でないと動かないHTML5 APIが増えてきたことで、さらに需要が増してきた感があります。

HTTPサーバ機能を提供してくれるソフトウェアは数あれど、Nodeモジュールのhttp-serverはこういったアドホックなニーズに簡単にマッチしてくれます。

SSL化する為のファイルを一度作ってさえしまえば、HTTPS開発環境を簡単に作れるようになります。

http-serverコマンドとは

必要最低限、かつ十分なHTTPサーバを起動する為のオーソドックスなNodeモジュール。

https-serverコマンドで起動したHTTPSサーバの後ろに別サーバのREST APIがいる想定で起動します。

サーバ証明書を作る

どんなに簡単にHTTPSサーバ起動出来るソフトウェアでもCA証明書、サーバ証明書、サーバ秘密鍵は作っておく必要があります。

opensslを使って以下の3ファイルを作っておきます。最初は大変ですが、同じPCをサーバにするなら何度でも使いまわせるので一度作り置きしておくと便利に使えます。

  1. CA証明書:cacert.crt(OSにインストールしておく)
  2. サーバ秘密鍵:nopass_server.key
  3. サーバ証明書:server.crt

オプションに証明書、鍵ファイルを指定してhttp-serverコマンドを実行

http-server -p 80 -c0 -P http://localhost:8080/ \
  --cors --ssl --key c:\openssl2\nopass_server.key \
  --cert c:\openssl2\server.crt

コマンド起動後、80ポートで起動したHTTPSサーバから8080ポートのRESTサーバにSOP(Same Origin Policy)違反することなく通信出来るようになります。

-nodejs
-,

執筆者:

関連記事

Angular4.4のHTTP通信処理にタイムアウトを設定をすると「timeout is not a function」エラーが発生する

目次1 事象2 原因3 対処4 まとめ 事象 Angular4.3で追加されたHttpClientModuleに移行せず、HttpModuleを使い続けているアプリで、とある理由からpackage-l …

Typescript3.0以下の環境で発生する「Cannot find name ‘unknown’」に対処する

目次1 事象2 原因3 対処4 まとめ 事象 Typescript2.3.4を使っている息の長いWebシステムでnpm installをし直し、tscビルドし直したらトランスパイルエラーが発生。「un …

ブラウザから起動したカメラの撮影画像をjavascriptで圧縮【Compressor.js】

「モバイル用Webアプリで撮影したカメラ画像のファイルサイズが大きすぎる・・・」 そんな悩みは無いですか? 昨今カメラ会社の経営が傾くほどスマホのカメラ性能が向上、それに応じて年々ファイルサイズも増大 …

Nodeアプリが依存するnpmモジュールライセンスをlicense-checker & Jenkinsで自動チェック(1)

目次1 目的2 使用するnpmモジュール3 ライセンスを表示してみる3.1 サマリで出す3.2 CSVファイルで出す4 まとめ 目的 ionicやNode.jsアプリが依存するライブラリにライセンス違 …

Mac、Linux、Windows(WSL無し環境)でNode.jsバージョン切り替え方法を統一したい

一時期ローカルPCにインストールされたNode.jsのバージョンを切り替えるツールが乱立してどれを選べばいいの状態で、当然オプションも違うのでOSによって違うツールが入っているとオプションを覚えるのが …


shingo nakanishi。東京で消耗中の職歴20年越え中年ITエンジニアです。「生涯現役プログラマを楽しむ」ことができる働き方探しをライフワークにしています。

19歳(1996年)から書き始めた個人日記が5,000日を超え、残りの人生は発信をして行きたいと思い、令和元日からこのサイトを開始しました。勉強と試行錯誤をしながら、自分が経験したIT関連情報を投稿しています。