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
-,

執筆者:

関連記事

mkcertとhttp-serverでHTTPS環境を作りAndroid(chrome)、iPhone(safari)から接続

簡単にパーフェクトなオレオレ証明書が作れるとgithub上で人気上昇中の「mkcert」。 GitHub  135 UsersFiloSottile/mkcerthttps://github …

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

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

ionicアプリを多言語化する

目次1 目的2 環境3 手順1.インストール4 手順2.src/assets/i18nに翻訳ファイルを作成する5 手順3.app.module.tsにngx-translate関連のモジュールを登録す …

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

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

podmanとNode.js公式コンテナイメージでnodeコマンドを使う

REHL8(CentOS8)からデフォルトインストールされるようになったpodmanでnodeコマンドが使える環境を作ってみます。 目次1 環境2 やること3 Node.jsイメージの導入4 コンテナ …

 

shingo.nakanishi
 

東京在勤、1977年生まれ、IT職歴2n年、生涯技術者として楽しく生きることを目指しています。デスマに負けず健康第一。