LoginSignup
mitu1935
@mitu1935

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

webアプリの通信をhttps化したい

ローカルの開発環境でwebアプリを作成しているが,デプロイした時にも通信がhttpsになるような環境を作りたい

アプリ開発環境
言語:react,typescript
パッケージバージョン管理:node.js
webAPI:react-speech-recognition

言語等使用バージョン
react:18.3.1
typescript:5.4.5
node:20.12.8

npm startにてローカルの開発環境にてアプリを実行したときに通信がhttpになっているためブラウザのマイクを許可しているにも関わらずマイクの使用が許可できずにブロックされてしまっているという問題が発生している。
※ブラウザのサイトの設定のところのマイクは許可するのラジオボタンを選択しています。

発生している問題・エラー

スクリーンショット 2024-05-11 154454.png

試したこと

package.json
scriptに"start": "webpack-dev-server --mode development
& HTTPS =true"としたが通信がhttpのままであった

package.json
{
  "name": "react_voice_stanp",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "start": "webpack-dev-server --mode development & HTTPS =true",
    "build": "webpack --mode production"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/miduki-gif/react_voice.git"
  },
  "author": "",
  "license": "ISC",
  "bugs": {
    "url": "https://github.com/miduki-gif/react_voice/issues"
  },
  "homepage": "https://github.com/miduki-gif/react_voice#readme",
  "description": "",
  "devDependencies": {
    "@types/node": "^20.12.8",
    "@types/webspeechapi": "^0.0.29",
    "ts-loader": "^9.5.1",
    "typescript": "^5.4.5",
    "webpack": "^5.91.0",
    "webpack-cli": "^5.1.4",
    "webpack-dev-server": "^5.0.4"
  },
  "dependencies": {
    "@emotion/react": "^11.11.4",
    "@emotion/styled": "^11.11.5",
    "@mui/material": "^5.15.16",
    "@types/react": "^18.3.1",
    "@types/react-dom": "^18.3.0",
    "lodash": "^4.17.21",
    "react": "^18.3.1",
    "react-dom": "^18.3.1",
    "react-speech-recognition": "^3.10.0"
  }
}

調べたこと

https化するにはドメインを発行して証明書を取るという方法やmkcertを使う(vite環境にてreactのプロジェクトをはじめていない)ことや自分が調べられた情報では実装が難しかったため質問させていただきます。

よろしくお願いいたします。

1

5Answer

httpsが必須な機能でも開発用に「localhostならhttpsじゃなくても使える」例外があるのでlocalhostを使えばいい。

1

Comments

  1. @mitu1935

    Questioner

    @pop-culture-studioさん回答していただきありがとうございます。
    [webpack-dev-server] On Your Network (IPv6)での実行では
    なく教えていただいた通りlocalhostの方で改めて試したところマイクのアクセスが
    許可されました。

    丁寧に教えていただきましてありがとうございます。

Comments

  1. @mitu1935

    Questioner

    @iiokazuyaさん回答していただきありがとうございます。
    いただいた通りpackage.jsonではなくnpm start時にset HTTPS=true&&npm startのように指定して実行しましたが以下のようなhttp通信になったままです。

    <i> [webpack-dev-server] Loopback: http://localhost:8080/
    <i> [webpack-dev-server] On Your Network (IPv4): http://192.168.179.22:8080/
    <i> [webpack-dev-server] On Your Network (IPv6): http://[fe80::658c:ff6:5b36:22a3]:8080/
    

albireoさん 回答していただきましてありがとうございます。

コメントしていただいている場所がブラウザ上で探せなかったためこちらの全体に対してコメントさせていただきます。申し訳ございません。

mkcertを試して実行してみます。
できましたら改めてコメント致します。
丁寧にhttpsの通信ができる仕組みについても書いてくださりありがとうございます。

0

Comments

  1. @mitu1935

    Questioner

    albireoさん mkcertで行う方法を教えていただきましてありがとうございます。試して実行してみると話してしまったのですが今回は下記の方法でやっていこうと思いました。今回は開発環境はlocalhostで実行し、本番環境ではwebサーバ上にhttpsの設定をして実行していこうと考えています。(エラーはlocalhostで実行したところマイクの問題は解消しました。)今回とは別でmkcertで行った場合の挙動について調べたり実行してみようと思います。丁寧にありがとうございました。

nginx(dockerでも直でも)でhttpsサーバを立てて、リバースプロキシでreactにproxyさせれば良いと思います。証明書はオレオレになりますが。

0

Comments

  1. @mitu1935

    Questioner

    @devzooiioozさん 回答していただきありがとうございます。自己証明書でnginxでhttpsサーバーを立ててリバースプロキシを使用する方法があるのですね。勉強で別プロジェクトでhttpsサーバを立てて挙動を見て試していきたいと感じました。知らなかった方法を教えていただきありがとうございます。今回は開発環境はlocalhostで実行し、本番環境ではwebサーバ上にhttpsの設定をして実行していこうと考えています。(エラーはlocalhostで実行したところ解消しました。)丁寧にありがとうございました。

Your answer might help someone💌