localhostでのreCAPTCHAの使用


286

PHPを使用してWebサイトを開発していますが、セッションの1つで人間による確認を行いたいと考えています。開発では、最初はシステムをローカルで実行しており、準備が整ったら、特定のドメインに配置します。

reCAPTCHAのウェブサイトには、プラグインが唯一の特定のドメイン(とサブドメイン)で動作すると言われています。

私の質問は、ローカルホストでreCAPTCHAプラグインを使用する方法はありますか?


事後にローカルホストを追加した場合は、Cookieをクリアしてください。
マイクフリン

3
ドメインのリストに次のように入力しますlocalhost
csandreas1 2018年

回答:


356

更新

元の答えは正しくありません。開発者ガイドには、次のように記載されています。

「開発に「localhost」を使用する場合は、ドメインのリストに追加する必要があります。」

これは、127.0.0.1/...ではなくを使用してlocalhostにアクセスする場合にのみ機能しますlocalhost/...

元の答えは以下に保存されています。


reCAPTCHA開発者ガイドによると:

「localhostドメインはデフォルトでサポートされなくなりました。開発のサポートを継続したい場合は、サイトキーのサポートされるドメインのリストに追加できます。管理コンソールに移動して、サポートされるドメインのリストを更新してください。開発用と本番用に別々のキーを使用し、本番サイトのキーでlocalhostを許可しないでください。」

つまり、同じキーを使用するだけです。


8
そのページに言葉が載っているか確認してみました。なくなった!2015年には、上記の引用@ developers.google.com/recaptcha/docs/start
Joshua Plicque

11
この回答は正確ですが、私を困らせた重要な警告があります。reCAPTCHAv1からv2に移行する場合、このメッセージが消えるようにAPIキーを再生成する必要があります。さらに、同様に重要ですが、私と同じように、ローカル/開発環境でオペレーティングシステムの「ホスト」ファイルにエントリを配置してテストドメインを設定する場合、許可されたドメインにそれらの「偽の」ドメインを追加する必要があります。 「ERROR:Invalid domain for site key」エラーを解決するための問題のreCAPTCHAアカウント。
ベンジョンソン

5
ローカルホストの名前が「localhost」でない場合、機能していません。
Hexodus 2016

12
Googleはlocalhostでテストする機能を削除したようです。
IrishChieftain 16

4
localhostは機能しませんでしたが、127.0.0.1と* .xip.ioアドレスの両方を使用できました。
2016年

104

2016年の時点で、ReCaptchaは基本的にlocalhostをサポートしていません。FAQから:

localhostドメインはデフォルトでサポートされなくなりました。開発のためにそれらのサポートを継続したい場合は、サイトキーでサポートされるドメインのリストにそれらを追加できます。管理コンソールに移動して、サポートされているドメインのリストを更新します。開発と本番では別のキーを使用し、本番サイトのキーでlocalhostを許可しないことをお勧めします。

だからlocalhostあなたのサイトのドメインのリストに追加するだけでいいでしょう。


12
追加しましたlocalhostが、「Localhostはこのサイトキーでサポートされているドメインのリストではありません」というエラーが表示されます。
aadi1295

6
@ArbazAbidグーグルがシステムを更新するのに1時間ほど待つ必要があるかもしれません...
CC Inc

1
さらに、多くのプロジェクトがあり、WindowsホストファイルとVirtualHostsをセットアップする場合(例:WAMP)、それはC:\ wamp \ bin \ apache \ Apache2.2.21 \ conf \ extra \ httpd-vhosts.confにあり、次にProject ServerName。テストされ、正常に動作します。
ジェフズ2016年

@Jeffz hostsファイルはWindows固有ではありません。これは一般的なアドバイスです。
Nathan Hornby 2017年

79

これは私のために働きました:

「次のテストキーを使用すると、CAPTCHAは常に取得されず、すべての検証リクエストはパスします。

サイトキー: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI

秘密鍵: 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe

reCAPTCHAウィジェットは警告メッセージを表示し、テスト目的のみであることを主張します。本番トラフィックにはこれらのキーを使用しないでください。」

ここから抽出:https : //developers.google.com/recaptcha/docs/faq#id-like-to-run-automated-tests-with-recaptcha.-what-should-i-do

BR!


1
すごい!これをありがとう。
サム

1
これが機能しなくなった場合は、Automatticのソリューションに切り替えます。ここでのあなたの解決策は、私がこの迷惑な技術を落とさないようにする唯一のものです。
PJ Brunet

1
開発環境と製品環境を区別するため、これは「正解」のようです。
ChronoFish

67

非常に簡単:

  1. Google reCaptcha管理パネルに移動します
  2. 次の画像のように、新しいサイトのドメインにlocalhost127.0.0.1を追加します。

ここに画像の説明を入力してください


更新:

あなたの質問はどのように設定することである場合reCaptchaはlocalhostでそれを使用するためのGoogleのサイトでは、その後、私は上記のが、あなたはどのように使用できることを興味があればそれを書いてきたreCAPTCHA上で両方 localhostwebsite hostによって、あなたのコントローラで、最小限のコードなど、いくつかのコードを防ぎます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の両方の設定キーlocalhostwebsiteあなたにそれのように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アクションまたはreCaptchaのパラメータを手動で設定reCaptcha_SecretKeyする必要はありませんでした。ローカルホストまたはWebサイトでプロジェクトを実行したかどうかに応じて、実行時にそれらすべてに適切な値が自動的に入力されます.😉ViewBag


16

Google recaptchaでドメインを追加するとき

新しいドメインを追加:ローカルホストではなくローカルホスト

「L」は大文字

幸運を


8

Googleは最近変更し、デフォルトでlocalhostを許可するのをやめました。(@Artur Cesar De Meloによって触れられたように)これは彼らのFAQの下にあります:

「ローカルホストがサポートされているドメインのリストにありません」というエラーが表示されます。これは以前は機能していましたが、どうすればよいですか?

localhostドメインはデフォルトでサポートされなくなりました。開発のためにそれらのサポートを継続したい場合は、サイトキーでサポートされるドメインのリストにそれらを追加できます。管理コンソールに移動して、サポートされているドメインのリストを更新します。開発と本番では別のキーを使用し、本番サイトのキーでlocalhostを許可しないことをお勧めします。

1:開発環境用に別のキーを作成する

2:許可ドメインのリストに127.0.0.1を追加します

3:変更を保存し、変更が有効になるまで最大30分待ちます


5

あたりとして、GoogleのreCAPTCHAのドキュメント

localhostドメインはデフォルトでサポートされなくなりました。開発のためにそれらのサポートを継続したい場合は、サイトキーでサポートされるドメインのリストにそれらを追加できます。管理コンソールに移動して、サポートされているドメインのリストを更新します。開発用と本番用に別々のキーを使用し、本番サイトのキーでlocalhostを許可しないことをお勧めします


5

現在のREcaptchaキーを削除してから、新しいキーを登録し、ドメインにキー設定設定します。 127.0.0.1 localhost


3

Recaptchaは動作しません localhost/

Use `127.0.0.1/` instead of `localhost/`

この回答は承認された回答とどのように異なりますか?
スモット2017

1
承認されたもののより単純なバージョンです。どちらも正解では不正解です。1)の場合:ドメインの承認済みリストにlocalhostを追加する必要はありません。2)の場合、これはlocalhostでは機能しません。
alianjum0 2017

2
  1. https://www.google.com/recaptcha/adminでウェブサイトを登録します
  2. jsプラグインを追加します。3。クラスを追加し、Googleが提供するサイトキーを追加します ここに画像の説明を入力してください
<script src='https://www.google.com/recaptcha/api.js'></script>
 <div class="g-recaptcha" data-sitekey="your site-key"></div>

1

古いキーがある場合は、APIキーを再作成する必要があります。プロキシにも注意してください。


プロキシの問題は何ですか?プロキシは、Google APIからの通信を許可する必要がありますか?
smoore4

1
@SQLDBA正しく構成されていないか、新しい場所(IP)が制裁国からのものである場合、問題が発生する可能性があります。
Soheil Novinfard


1

"localhost"または "127.0.0.1"と記述できますが、URLは同じである必要があります

例:Google Domains Add-> localhost URL => localhost / login.php

例:Google Domains Add-> 127.0.0.1 URL => 127.0.0.1/login.php


1

localhostが機能するようになりました。ただし、localhostをドメイン名のリストに追加した後、有効になるまでに最大30分かかることに注意してください(ドメイン名リストに対して表示されるヘルプヒントによると)。


0

はい、これは古い質問ですが、これはすべてのユーザーがローカルホストのreCaptchaで問題を抱えているのに役立つかもしれません。実際、Googleは「デフォルトでは、すべてのキーは「localhost」(または「127.0.0.1」)で機能します」と述べていますが、実際にlocalhostでreCaptchaを使用すると問題が発生する可能性があります。私の場合、私は安全なトークンを使用して私のものを解決しました

PHPのワーキングソリューションをここに投稿しました


0

最近、recaptcha v2を含むWebサイトの作成に取り組んでおり、自分のローカルホストでテストの自動化を行う必要があります。IPやローカルホストをrecaptcha管理ポータルに追加していません。

以下の手順に従ってください

  1. recaptcha管理サイトのスクリーンショットにログイン

  2. キー設定を見つける

  3. 詳細設定をクリックします

  4. 下にドメイン名の検証、アンチェックがreCAPTCHAのソリューションの起源を確認するチェックボックスを。このオプションは、上記のドメインのいずれかからのリクエストを確認するために使用されます。

    無効にした場合、解決策を検証するときにサーバーのホスト名を確認する必要があることに注意してください。


私は新しいキーを作成し、これを無効にして、ローカルホストでのテストにこのキーを使用します。

これは、サンプルページのコメントのためのreCAPTCHAを実装します。


0

laravelウェブサイトでrecaptchaに関連するエラーが発生しました。コマンドとenvファイルを使用して解決しました。上記の回答もこの問題の解決に役立ちます。

まず最初に、Google Recpatchaキーのenvファイル(Google Recaptchaキーを含むケースファイル)を確認します。

2番目にこれらのコマンドを実行します。

  1. php artisan config:clear
  2. php artisan cache:clear
  3. 作曲家ダンプオートロード
  4. php artisan view:clear
  5. php artisan route:clear

    それはあなたの問題を解決します


これはreCaptchaの問題、キャッシュの問題ではなく、開発環境(localhostドメイン)での使用に関するものです。
ROOT
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.