localhost에서 reCAPTCHA 사용


286

PHP를 사용하여 웹 사이트를 개발 중이며 세션 중 하나에서 사람을 확인하고 싶습니다. 개발을 위해 처음에는 시스템을 로컬에서 실행하고 있으며 준비가되면 특정 도메인에 시스템을 설치합니다.

에서 reCAPTCHA를 웹 사이트 는 플러그인 만 주어진 도메인 (및 하위 도메인)에서 작동 할 것이라고 말한다.

내 질문은 : localhost에서 reCAPTCHA 플러그인을 사용하는 방법이 있습니까?


사실 이후에 localhost를 추가 한 경우 쿠키를 지우십시오.
Mike Flynn

3
도메인 목록에서localhost
csandreas1

답변:


357

최신 정보

원래 답변이 더 이상 정확하지 않습니다. 개발자 안내서는 이제 다음과 같이 말합니다.

"개발에"localhost "를 사용하려면 도메인 목록에 추가해야합니다."

127.0.0.1/...이보다 는를 사용하여 localhost에 액세스하는 경우에만 작동합니다 localhost/....

원래 답변은 아래에 유지됩니다.


reCAPTCHA 개발자 안내서 에 따르면 :

"로컬 호스트 도메인은 더 이상 기본적으로 지원되지 않습니다. 개발을 위해 계속 지원하려면 사이트 키의 지원되는 도메인 목록에 추가 할 수 있습니다. 지원되는 도메인 목록을 업데이트하려면 관리 콘솔로 이동하십시오. 개발 및 프로덕션에 별도의 키를 사용하고 프로덕션 사이트 키에서 로컬 호스트를 허용하지 않도록하십시오. "

다시 말해, 단순히 동일한 키를 사용하십시오.


8
해당 페이지에 단어가 있는지 확인했습니다. 사라졌다! 2015 년에 위의 인용문을 찾을 수 있습니다. @ developers.google.com/recaptcha/docs/start
Joshua Plicque

11
이 답변은 정확하지만 중요한 경고가 있습니다. reCAPTCHA v1에서 v2로 마이그레이션 할 때이 메시지가 사라지려면 API 키를 다시 생성해야합니다. 또한 나와 마찬가지로 운영 체제의 "호스트"파일에 항목을 배치하여 로컬 / 개발 환경에서 테스트 도메인을 설정하는 경우 해당 "가짜"도메인을 허용 된 도메인에 추가해야합니다. 문제가있는 reCAPTCHA 계정에서 "오류 : 사이트 키의 잘못된 도메인"오류를 해결하십시오.
벤 존슨

5
로컬 호스트 이름이 "localhost"가 아닌 경우 작동하지 않습니다.
Hexodus

12
Google은 localhost에서 테스트하는 기능을 제거한 것으로 보입니다.
IrishChieftain

4
localhost가 나를 위해 작동하지 않는 동안 127.0.0.1과 * .xip.io 주소를 모두 사용할 수있었습니다.
davidbates 2016

104

2016 년 현재 ReCaptcha는 로컬 호스트를 더 이상 지원하지 않습니다 . FAQ에서 :

localhost 도메인은 더 이상 기본적으로 지원되지 않습니다. 개발을 위해 계속 지원하려면 사이트 키의 지원되는 도메인 목록에 추가 할 수 있습니다. 지원되는 도메인 목록을 업데이트하려면 관리 콘솔로 이동하십시오. 개발 및 프로덕션에 별도의 키를 사용하고 프로덕션 사이트 키에서 로컬 호스트를 허용하지 않는 것이 좋습니다.

localhost사이트의 도메인 목록에 추가 하기 만하면 됩니다.


12
localhost"Localhost는이 사이트 키에서 지원되는 도메인 목록이 아닙니다."라는 오류 메시지가 추가 되었지만 여전히 나타납니다.
aadi1295

6
@ArbazAbid 구글이 시스템을 업데이트하기 위해 한 시간 정도 기다려야 할 수도 있습니다.
CC Inc

1
또한 많은 프로젝트가 있고 Windows 호스트 파일 및 VirtualHosts를 설정하는 경우 (예 : WAMP) C : \ wamp \ bin \ apache \ Apache2.2.21 \ conf \ extra \ httpd-vhosts.conf에있을 수 있습니다. 프로젝트 ServerName. 테스트되고 잘 작동합니다.
Jeffz

@Jeffz 호스트 파일은 Windows에 한정되지 않습니다. 이것은 일반적인 조언입니다.
Nathan Hornby 2016 년

82

이것은 나를 위해 일했다 :

"다음 테스트 키를 사용하면 항상 보안 문자가 표시되지 않으며 모든 확인 요청이 통과됩니다.

사이트 키 : 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. 당신의 이동 구글 reCAPTCHA를 관리 패널
  2. 다음 이미지와 같이 새 사이트의 도메인에 localhost& 127.0.0.1를 추가하십시오 .

여기에 이미지 설명을 입력하십시오


최신 정보:

귀하의 질문에 설정하는 방법 경우 reCaptcha로컬 호스트에서 사용 구글 사이트에서 다음 내가있다 위에 쓴하지만 당신은 당신이 사용하는 방법을 것을 호기심 경우 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 웹 프로젝트에 다음 을 추가하십시오 .

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>

참고 : 이 방법을 사용 reCaptcha_SecretKey하면 사후 조치 에서 매개 변수를 설정 하거나 ViewBag조치 및보기에서 수동으로 reCaptcha에 대한 매개 변수를 설정할 필요가 없었으며 , 로컬 호스트 또는 웹 사이트에서 프로젝트를 실행 한 것에 따라 모든 매개 변수가 런타임시 자동으로 적절한 값으로 채워집니다. .😉


16

Google recaptcha에서 도메인을 추가 할 때

새 도메인 추가 : localhost가 아닌 Localhost

"L"은 대문자

행운을 빕니다


8

Google은 최근 로컬 호스트가 기본적으로 허용되도록 중지했습니다. (@Artur Cesar De Melo가 언급 한대로) 다음은 FAQ의 내용입니다.

"Localhost가 지원되는 도메인 목록에 없습니다"라는 오류가 발생합니다. 이것은 전에 일하고 있었는데 어떻게해야합니까?

localhost 도메인은 더 이상 기본적으로 지원되지 않습니다. 개발을 위해 계속 지원하려면 사이트 키의 지원되는 도메인 목록에 추가 할 수 있습니다. 지원되는 도메인 목록을 업데이트하려면 관리 콘솔로 이동하십시오. 개발 및 프로덕션에 별도의 키를 사용하고 프로덕션 사이트 키에서 로컬 호스트를 허용하지 않는 것이 좋습니다.

1 : 개발 환경을위한 별도의 키 만들기

2 : 허용 된 도메인 목록에 127.0.0.1 추가

3 : 변경 사항을 저장하고 변경 사항이 적용되도록 최대 30 분 동안 허용


5

당으로 구글의 reCAPTCHA를 문서

localhost 도메인은 더 이상 기본적으로 지원되지 않습니다. 개발을 위해 계속 지원하려면 사이트 키의 지원되는 도메인 목록에 추가 할 수 있습니다. 지원되는 도메인 목록을 업데이트하려면 관리 콘솔로 이동하십시오. 개발 및 프로덕션에 별도의 키를 사용하고 프로덕션 사이트 키에서 로컬 호스트를 허용하지 않는 것이 좋습니다.


5

현재 REcaptcha 키를 제거한 다음 새 키를 등록 하고 도메인에 키 설정 을 설정하십시오 . 127.0.0.1 localhost


3

요점은 작동하지 않습니다 localhost/

Use `127.0.0.1/` instead of `localhost/`

이 답변은 허용되는 답변과 어떻게 다릅니 까?
smottt

1
받아 들여지는 것보다 간단한 버전입니다. 둘 다 정답이 맞지 않습니다. 1) 허용 된 도메인 목록에 localhost를 추가 할 필요가 없습니다. 2) localhost와는 작동하지 않습니다.
alianjum0

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에 문제가있는 모든 사용자를 도울 수 있습니다. 구글은 실제로 "기본적으로 모든 키는 'localhost'(또는 '127.0.0.1')에서 작동하지만"localhost에서 reCaptcha를 실제로 사용하면 문제가 발생할 수 있다고 말합니다. 내 경우에는 안전한 토큰을 사용하여 내 문제를 해결했습니다.

PHP 용 WORKING SOLUTION을 여기에 게시했습니다.


0

최근에 recaptcha v2가 포함 된 웹 사이트를 만드는 중이었고 로컬 호스트에서 테스트 자동화를 수행해야합니다. recaptcha 관리 포털에 ip 또는 localhost를 추가하지 않았습니다.

아래 단계를 따르십시오

  1. recaptcha 관리자 사이트 스크린 샷에 로그인

  2. 키 설정 찾기

  3. 고급 설정을 클릭하십시오

  4. 에서 도메인 이름 확인 , 취소 검사 reCAPTCHA를 솔루션의 기원 확인 확인란을. 이 옵션은 위에 나열된 도메인 중 하나에서 온 요청을 확인하는 데 사용됩니다.

    비활성화 된 경우 솔루션을 확인할 때 서버에서 호스트 이름을 확인해야합니다.


새 키를 만들고 비활성화하고 localhost에서 테스트하기 위해이 키를 사용합니다.

주석을위한 reCAPTCHA를 구현 하는 샘플 페이지 입니다.


0

laravel 웹 사이트에서 recaptcha와 관련된 오류가 발생했습니다. 명령을 사용하고 env 파일을 사용하여 문제를 해결했으며 위의 답변 도이 ​​문제에 도움이됩니다.

먼저 Google recpatcha 키에 대한 env 파일 (Google recaptcha 키가있는 경우 파일)을 확인하십시오.

두 번째로 다음 명령을 실행하십시오.

  1. PHP 장인 구성 : 지우기
  2. PHP 장인 캐시 : 지우기
  3. 작곡가 덤프 자동로드
  4. PHP 장인보기 : 지우기
  5. PHP 장인 경로 : 지우기

    그것은 당신의 문제를 해결할 것입니다


이것은 reCaptcha의 문제, 캐싱 문제가 아니라 개발 환경 (localhost 도메인)에서 사용하는 것입니다.
ROOT
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.