5

Tôi đang cố gắng thiết lập xác thực hai yếu tố với Google Authenticator trên trang web của mình. Tôi có thể tạo ra mã làm việc, nhưng khi tôi chèn URL hình ảnh vào trang, tôi nhận được lỗi sau trong Chrome thanh tra:400 Yêu cầu không hợp lệ khi cố gắng chèn hình ảnh mã QR cho Google Authenticator

GET https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/MyLabel?secret=THESECRET 400 (Bad Request) 

Mã để tạo mã 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}" 

Client-side jQuery mà chèn hình ảnh:

img = $("<img>").attr("src", url) 
$("#qr_box").html("") 
$("#qr_box").append(img) 

những kết quả trong HTML sau đây trên trang:

<img src="https://www.google.com/chart?chs=200x200&amp;chld=M|0&amp;cht=qr&amp;chl=otpauth://totp/MyLabel?secret=THESECRET"> 

Hình ảnh có thể được mở trong tab mới mà không gặp sự cố. Hình ảnh chỉ được hiển thị thành công trong trang của tôi khoảng 1/10 thời gian; những lần khác Chrome cung cấp 400. Tôi có thiếu điều gì đó hiển nhiên ở đây không?

+0

Dường như yêu cầu mà Google đưa ra cho trình duyệt đã được trả lại bằng loại văn bản/html thay vì hình ảnh/png. Tôi thiết lập một điểm cuối đơn giản để yêu cầu url, nắm bắt phản hồi và đặt loại thành hình ảnh/png trước khi trở về giao diện người dùng của tôi. Nếu ai đó biết một cách thanh lịch hơn để làm điều đó tôi rất thích nghe. – kshen

Trả lời