サイトで Google Authenticator を使用して 2 要素認証を設定しようとしています。動作するコードを生成することはできますが、画像の URL をページに挿入すると、Chrome インスペクタに次のエラーが表示されます。
GET https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/MyLabel?secret=THESECRET 400 (Bad Request)
QR コードを生成するコード:
try
key = crypto.randomBytes(10).toString('hex')
catch error
console.log "error generating code: #{error}"
encoded = base32.encode(key)
label = encodeURIComponent "MyLabel"
uri = "otpauth://totp/#{label}?secret=#{encoded}"
url = "https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=#{uri}"
画像を挿入するクライアント側の jQuery:
img = $("<img>").attr("src", url)
$("#qr_box").html("")
$("#qr_box").append(img)
その結果、ページに次の HTML が表示されます。
<img src="https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/MyLabel?secret=THESECRET">
画像は問題なく新しいタブで開くことができます。画像が私のページに正常に表示されるのは約 1/10 の時間だけです。それ以外の場合、Chrome は 400 を返します。ここで明らかな何かが欠けていますか?