お世話になっております。
reCAPTCHA v3を導入しようとしているのですが、サーバ側にjs経由でリクエストが送れずに困っております。
具体的にはPOSTのリクエストがGETに変わってしまいます。
やろうとしていることは
- formをsubmitする(POST)
- javascript(jQuery)でリクエストを捕まえる(preventDefault())
- 非同期で取得したreCAPTCHA用のトークンをhiddenタグにセットしてformのリクエストに含める
- javascriptで改めてsubmitする
↓
5. POSTリクエストがGETに変わってしまう
いろいろなサイトで紹介されているコードですが、下記のように実装しました。
html
1<!DOCTYPE html> 2<html> 3<head> 4</head> 5<body> 6 <form method="post" action="form.rb" name="myform"> 7 <input type="text" name="name"> 8 <input name="submit" type="submit" value="送信"> 9 </form> 10 <!-- reCAPTCHA v3 --> 11 <script src="https://www.google.com/recaptcha/api.js?render=<SITE-KEY>"></script> 12 <script> 13 $('form').submit(function(){ 14 event.preventDefault(); 15 grecaptcha.ready(function() { 16 grecaptcha.execute('<SITE-KEY>', {action: '<ACTION-NAME>'}).then(function(token) { 17 $('form').prepend('<input type="hidden" name="g-recaptcha-token" value="' + token + '">'); 18 $('form').submit(); 19 }); 20 }); 21 }) 22 </script> 23 <!-- //reCAPTCHA v3 --> 24</body> 25</html>
この結果が/?g-recaptcha-token=03AF6jDqWBylKAs...
のようにGETリクエストになってサーバ側に届いてしまい、原因が分からずに困っています。
手がかりでも構わないので、アドバイスを頂けると幸いです。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/12 08:26
2019/02/12 08:49
2019/02/12 09:01
2019/02/12 09:10 編集
2019/02/12 09:12
2019/02/12 09:25
2019/02/12 09:47
2019/02/12 09:51
2019/02/12 10:07