私はPHPを使用してWebサイトを開発していますが、いずれかのセッションで人間による検証を行いたいです。開発のために、私は最初にシステムをローカルで実行しています、そしてそれが準備ができているとき、私は特定のドメインにそれを置くつもりです。
reCAPTCHA Webサイト では、プラグインは指定されたドメイン(およびサブドメイン)でのみ機能すると言われています。
私の質問は、ローカルホストでreCAPTCHAプラグインを使用する方法はありますか?
元の答えはもう正しくありません。開発者ガイドには、次のように記載されています。
「開発に「localhost」を使用したい場合は、ドメインのリストに追加する必要があります。」
これは、127.0.0.1/...
ではなくlocalhost/...
を使用してlocalhostにアクセスする場合にのみ機能します。
元の答えは以下に保存されています。
reCAPTCHA開発者ガイド によると、
msgstr "" "localhostドメインはデフォルトではサポートされなくなりました。開発のためにそれらを引き続きサポートしたい場合はそれらをあなたのサイトキーのサポートドメインのリストに追加してください。開発用と本番用に別のキーを使用し、本番サイトのキーでlocalhostを許可しないようにしてください。」
つまり、同じキーを使うだけです。
2016年現在、 ReCaptchaはもはや単純にlocalhostをサポートしていません 。 FAQから:
localhostドメインはデフォルトではサポートされなくなりました。あなたが開発のためにそれらをサポートし続けたいのなら、あなたはあなたのサイトキーのためにサポートされるドメインのリストにそれらを追加することができます。管理コンソールに移動して、サポートされているドメインのリストを更新してください。開発用と本番用に別のキーを使用し、本番サイトのキーにlocalhostを許可しないことをお勧めします。
あなたのサイトのドメインのリストにlocalhost
を追加するだけでいいのです。
それはとても簡単です:
localhost
&127.0.0.1
を追加します。更新:
あなたの質問がlocalhostでそれを使用するためにGoogleのサイトでreCaptcha
を設定する方法であるならば、私はそれを上に書いたがあなたがreCAPTCHA
onbothlocalhost
とwebsite Host
byコントローラ内の最小コードを避け、ConfigurationManager.AppSettings["ReCaptcha:SiteKey"]
のようないくつかのコードを避けることで、この追加の説明と答えのコードを手助けします。
次のようなGETやPOSTアクションが好きですか?
それ ???? reCaptchaをサポートし、reCaptchaを処理するための他のコードを必要としません。
[HttpGet]
[Recaptcha]
public ActionResult Register()
{
// Your codes in GET action
}
[HttpPost]
[Recaptcha]
[ValidateAntiForgeryToken]
public ActionResult Register(RegisterViewModel model, string reCaptcha_SecretKey){
// Your codes in POST action
if (!ModelState.IsValid || !ReCaptcha.Validate(reCaptcha_SecretKey))
{
// Your codes
}
// Your codes
}
表示:( 参照 )
@ReCaptcha.GetHtml(@ViewBag.publicKey)
@if (ViewBag.RecaptchaLastErrors != null)
{
<div>Oops! Invalid reCAPTCHA =(</div>
}
使うには
A)次のActionFilter
をWebプロジェクトに追加してください。
public class RecaptchaAttribute : FilterAttribute, IActionFilter
{
public void OnActionExecuting(ActionExecutingContext filterContext)
{
var setting_Key = filterContext.HttpContext.Request.IsLocal ? "ReCaptcha_Local" : "ReCaptcha";
filterContext.ActionParameters["ReCaptcha_SecretKey"] = ConfigurationManager.AppSettings[$"{setting_Key}:SecretKey"];
}
public void OnActionExecuted(ActionExecutedContext filterContext)
{
var setting_Key = filterContext.HttpContext.Request.IsLocal ? "ReCaptcha_Local" : "ReCaptcha";
filterContext.Controller.ViewBag.Recaptcha = ReCaptcha.GetHtml(publicKey: ConfigurationManager.AppSettings[$"{setting_Key}:SiteKey"]);
filterContext.Controller.ViewBag.publicKey = ConfigurationManager.AppSettings[$"{setting_Key}:SiteKey"];
}
}
B)両方のreCaptcha
とlocalhost
のwebsite
設定キーを、webconfig
ファイルに追加します。
<appSettings>
<!-- RECAPTCHA SETTING KEYS FOR LOCALHOST -->
<add key="ReCaptcha_Local:SiteKey" value="[Localhost SiteKey]" />
<add key="ReCaptcha_Local:SecretKey" value="[Localhost SecretKey]" />
<!-- RECAPTCHA SETTING KEYS FOR WEBSITE -->
<!--<add key="ReCaptcha:SiteKey" value="[Webite SiteKey]" />
<add key="ReCaptcha:SecretKey" value="[Webite SecretKey]" />-->
<!-- OTHER SETTING KEYS OF YOUR PROJECT -->
</appSettings>
注:この方法では、postアクションまたはanyに
reCaptcha_SecretKey
パラメータを設定する必要はありませんでした。アクションとビューでreCaptchaを手動で変更する場合はViewBag
、これらはすべてローカルホストまたはWebサイトでプロジェクトを実行したかどうかに応じて、実行時に適切な値で自動的に入力されます。
これは私のために働いた:
「次のテストキーを使用すると、常に「CAPTCHAなし」と表示され、すべての確認要求に合格します。
サイトキー:6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI
秘密鍵:6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe
ReCAPTCHAウィジェットは、それがテスト目的のためだけであると主張するために警告メッセージを表示します。本番用のトラフィックにこれらのキーを使用しないでください。」
ここから抜粋: https://developers.google.com/recaptcha/docs/faq
BR!
Googleは最近localhostがデフォルトで許可されることを許可することを止めて変更しました。 (@Artur Cesar De Meloが感心したとおり)これは彼らのFAQの下にあります:
「Localhostはサポートされているドメインのリストにありません」というエラーが表示されます。これは以前はうまくいっていましたが、どうすればいいですか?
localhostドメインはデフォルトではサポートされなくなりました。あなたが開発のためにそれらをサポートし続けたいのなら、あなたはあなたのサイトキーのためにサポートされるドメインのリストにそれらを追加することができます。管理コンソールに移動して、サポートされているドメインのリストを更新してください。開発用と本番用に別のキーを使用し、本番サイトのキーにlocalhostを許可しないことをお勧めします。
1:開発環境用に別のキーを作成する
2:許可ドメインのリストに127.0.0.1を追加
3:変更を保存し、変更が有効になるまで最大30分かかります
によると Google recaptcha documentation
localhostドメインはデフォルトではサポートされなくなりました。あなたが開発のためにそれらをサポートし続けたいのなら、あなたはあなたのサイトキーのためにサポートされるドメインのリストにそれらを追加することができます。管理コンソールに移動して、サポートされているドメインのリストを更新してください。開発と本番用に別のキーを使用し、本番サイトのキーにlocalhostを許可しないことをお勧めします。
現在のREcaptchaキーを削除してから、新しいキーを登録し、キー設定をドメインに設定します。127.0.0.1 localhost
Recaptchaはlocalhost/
では動作しません
Use `127.0.0.1/` instead of `localhost/`
古いキーがある場合は、APIキーを再作成する必要があります。プロキシにも注意してください。
https://developers.google.com/recaptcha/docs/domain_validation
あなたがチェックを無効にすることができると言う部分をチェックしてください。開発のためだけにそれをしてください。
"localhost"または "127.0.0.1"と書くことができますがURLは同じでなければなりません
例:Googleドメイン追加 - > localhost URL => localhost/login.php
例:Googleドメインの追加 - > 127.0.0.1 URL => 127.0.0.1/login.php
- でウェブサイトを登録します– https://www.google.com/recaptcha/admin
- jsプラグインを追加3.クラスを追加し、Googleが提供するサイトキー
<script src='https://www.google.com/recaptcha/api.js'></script>
<div class="g-recaptcha" data-sitekey="your site-key"></div>
私は最近recaptcha v2を含むWebサイトを作成しようとしていました、そして私は私のローカルホスト上でテスト自動化をする必要があります。私はrecaptcha管理ポータルにipやlocalhostを追加しませんでした。
以下の手順に従ってください
Recaptcha管理サイトにログインします screenshot
キー設定を見つける
詳細設定をクリック
ドメイン名検証の下で、チェックを外しますreCAPTCHAソリューションの起源の確認チェックボックスこのオプションは、上記のドメインのいずれかからリクエストが来たことを確認するために使用されます。
注意してください、無効になっている場合は、解決策を検証するときにサーバー上のホスト名を確認する必要があります。
新しいキーを作成してこれを無効にし、このキーをlocalhostでのテストに使用します。
これは サンプルページ で、コメントのためにreCAPTCHAを実装しています。
google recaptchaでドメインを追加するとき
新しいドメインを追加:ローカルホストではなくローカルホスト
「L」は大文字
がんばろう
localhostは今動作します。ただし、ドメイン名のリストにlocalhostを追加してから有効になるまでに最大30分かかることを覚えておいてください(ドメイン名リストに対して表示されるヘルプのヒントによると)。
はい、これは古い質問ですが、これはlocalhost上のreCaptchaに関する問題を抱えているすべてのユーザーを助けているかもしれません。 Googleは確かに「デフォルトでは、すべてのキーが 'localhost'(または '127.0.0.1')で動作する」と言っていますが、実際にはlocalhostでreCaptchaを使用すると問題が生じる可能性があります。私の場合は、 secure token を使って私の解決しました