[解決済み] Google Chrome拡張機能でStripeのクレジットカードフォームを使用。"Payment not secure?" を回避できない。
質問
Google Chromeの拡張機能で、ブラウザのポップアップ内に簡単なStripeのクレジットカードのフォームを表示させようとしています。 しかし、クロームの最新バージョンでは、クレジットカードのフォームに常に "支払いは安全ではありません" というメッセージが表示されます。
このメッセージについて、google chrome docsの内容をこちらで読みました。 https://developers.google.com/web/updates/2016/10/avoid-not-secure-warn
そして、ここが関連する部分だと思います。
Not Secure警告が表示されないようにするには、要素を含むすべてのフォームと、クレジットカードのフィールドとして検出された入力が、安全なオリジン上にのみ存在するようにする必要があります。つまり、トップレベルのページはHTTPSでなければならず、入力がiframe内にある場合は、そのiframeもHTTPSで提供されなければなりません。
Stripeのクレジットカードフォームのiframeを検査したところ、Googleが言うように、すべてのリソースをhttpsで読み込んでいるようです。
エクステンションの他のどこにも他のリソースをロードしていません。
他に思いつくのは、拡張機能のポップアップ自体がchrome-extension://のURLになっていることですが、それがここで関係あるかは不明です。 もしそれが問題なら、拡張機能のポップアップ内にクレジットカードのフォームを設置しても、"payment not secure"のメッセージが表示されないということでしょうか?
何かお手伝いやご説明がありましたら、ぜひお願いします。
以下は私のコードです。
popup.html
<!doctype html>
<html>
<head>
<script src="popup.js"></script>
<script src="stripe.js"></script>
<style>
body{
width: 400px;
}
</style>
</head>
<body>
<form id="PaymentForm">
<h2>Enter Payment Details</h2>
<div>
<div id="card-element" class="field"></div>
</div>
</form>
</body>
</html>
popup.js。
window.onload = function(){
var stripe = Stripe('MY_API_KEY');
var elements = stripe.elements();
var card = elements.create('card', {
style: {
base: {
iconColor: '#666EE8',
color: '#31325F',
lineHeight: '40px',
fontWeight: 300,
fontFamily: 'Helvetica Neue',
fontSize: '15px',
'::placeholder': {
color: '#CFD7E0',
},
},
}
});
card.mount('#card-element');
}
アップデイト
Chromeを完全にアンインストールし、~/Library/Application Support/Google/Chromeにあるプロフィール情報をすべて削除してから再インストールしたところ、このクレジットカードのフォームエラーはなくなったようで、"payment not secure"というメッセージも表示されなくなったようです。 もしかしたら、変な一過性のバグだったのかもしれません。 しかし、Stripe APIはまだコンソールに不吉な警告を出力しています。
Stripe.jsの統合は、HTTPでテストすることができます。ただし、本番のStripe.js統合はHTTPSを使用する必要があります。
また、前述したようにStripeは全てhttpsで行っているようなので、Stripeのフォームがchrome-extension://のurlでブラウザのポップアップ内にあることと(もしかしたら)関係があるのでしょうか?
解決方法は?
<ブロッククオートこれは、ストライプのフォームがブラウザのポップアップ内にあり、chrome-extension://のURLで表示されることと関係があるのでしょうか?
はい、ほぼ間違いなくこのケースです。この警告は、ElementsがJavascriptでプロトコルを見たときに発せられるものです(via.
window.location.protocol
でない場合は
https:
. (Elementsのコードの最小化されていないバージョンはありませんが、比較的簡単に
最小化されたコード
を読み、ご指摘の警告が出る条件を探してみてください)。
実際には、ファイルが実際にHTTPSで読み込まれていることが確認できれば、問題ないはずです。しかし、このような一般的でないシナリオでは、おそらく PCI SAQ A . に直接連絡することをお勧めします。 Stripeのサポート 拡張機能のPCI準拠状況について、より詳細な情報を提供できるかどうかを確認してください。
関連
-
[解決済み] old_chrome.exeとは何ですか?
-
[解決済み] クロームやクロミウムでHTTP/2を無効にする方法は?
-
[解決済み】Chromeデベロッパーツールで読み込まれたすべてのスクリプトを検索する方法は?
-
[解決済み】Postman Chrome拡張機能で配列を送信することは可能ですか?
-
[解決済み】WebDriverException: 不明なエラーです。Chromeブラウザーを起動しようとすると、DevToolsActivePortファイルが存在しない。
-
[解決済み】ChromeのデベロッパーズツールやFirefoxのFirebugでXPath式を検証する方法とは?
-
[解決済み】XHRを編集して再生する chrome/firefox など?
-
[解決済み] Google Chromeブラウザのバグレポートはどこで見つけられますか?
-
[解決済み] URLのロケーションハッシュ「#:~:text=`」とは一体何なのでしょうか?[クローズド]
-
[解決済み] Chromeインスペクタでネットワーク要求のパスなどが表示されない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Chromeで「Slow network detected...」というログが表示されるのはなぜですか?
-
[解決済み] Chrome は、保存パスワードなどを書き込む SQLite データベース ファイルをどこに保存していますか?
-
[解決済み] badidea」や「thisisunsafe」を使ってChromeの証明書/HSTSエラーを回避する場合、現在のサイトにのみ適用されるのでしょうか?[クローズド]
-
[解決済み] Google ChromeのERR_SSL_CLIENT_AUTH_SIGNATURE_FAILEDについて
-
[解決済み】自己署名付きlocalhost証明書をChromeが受け入れるようにする方法
-
[解決済み】ChromeデベロッパーツールでHTTPリクエストを行う。
-
[解決済み】印刷プレビューで背景色が表示されない。
-
[解決済み】Chromeデベロッパーツールを新しいウィンドウで開くには?
-
[解決済み】WebDriverException: 不明なエラーです。Chromeブラウザーを起動しようとすると、DevToolsActivePortファイルが存在しない。
-
[解決済み] Chrome web inspectorのネットワークタブで拡張機能のリソースを非表示にすることは可能ですか?