こんにちは、おーしまです。
今回はhttp通信と、https通信の違いについてです。
というのも、フリマアプリを作成している中で、ローカルのブラウザのlocalhostでは、クレジットカード決済ができているのに、herokuにデプロイしたところ、クレジット決済ができなくなるということが起きました。
原因はこちらのコード
<!-正しい> <script type='text/javascript' src='https://js.pay.jp/v1/'></script> <!-誤り> <script type='text/javascript' src='http://js.pay.jp/v1/'></script>
このコードは、クレジット決済をするために、payjp.jsというライブラリを読み込むための記述で、application.html.erbのhead要素に記述します。
本来、httpsとなるところが、httpとなっていました。
つまり、
http通信は、ローカルのブラウザで読み込むけど、ネット上では読み込まない。
https通信は、ローカルでも、ネット上でも、どっちも読み込む。
ということですね。
もっと詳しく調べてみました。
http通信:ホームページの文字や画像や動画などのデータをサーバとクライアントの間で通信するときの通信規約(プロトコル)
https通信:httpと同じプロトコルの1つだが、TLS(LLS)が使われ、セキュリティがしっかりしている。httpとの違いとしては通信内容が暗号化していること。
大きな違いは、通信が暗号化されているか、暗号化されていないか、でした。
ちなみに、「プロトコル」とは、ネットワーク通信する際のルール、手順のことです。
私なりにネットで調べてみたのですが、herokuにデプロイすると、https通信しかできなくなる理由は、よくわかりませんでした。仮説ですが、ネット上で公開されるものはhttps通信でなければならないルールがある、ということだと思います。理由は、このはてなブログとか、色々のurlは、https が使われているからです笑
ごめんなさい、とりあえず、https通信を使わないといけないことは分かった。。。
お疲れ様〜