Мы начали использовать ASP.NET recaptcha управление, и оно хорошо работает. но одно из требований, которые мы имеем, - то, что весь исходящий трафик пробегается через Https.
Я знаю, что recaptcha поддерживает https, но не ясно, как настроить (или даже если это настраивается) при использовании опции плагина ASP.NET.
кто-либо получил опыт этого?
Я расширюсь немного на том, что я нашел до сих пор....
Пакет Recaptcha содержит 3 общедоступных класса
RecaptchaControl, RecaptchaValidator
и RecaptchaResponse
RecaptchaControl
управление Asp.NET, recaptcha определенные методы на там, кажется, касаются тем/стиля.
Экземпляр Блока проверки допустимости имеет поле RemoteIP (который я предполагаю, представил бы сервер проверки), но я не могу способ связать это с управлением.
RecaptchaResponse
кажется, более или менее представляет перечисление с возможными ответами (допустимый/недопустимый/неудавшийся для соединения).
похож на управление Recaptcha, разумно выбирает https, если запрос был https. Я предполагаю, что это делает то же для проверки, но не ясного из исходного кода http://code.google.com/p/recaptcha/source/browse/trunk/recaptcha-plugins/dotnet/library/
private const string VerifyUrl = "http://www.google.com/recaptcha/api/verify";
private const string RECAPTCHA_SECURE_HOST = "https://api-secure.recaptcha.net";
private const string RECAPTCHA_HOST = "http://api.recaptcha.net";
--------------------------------SNIP------------------------------------
///
/// This function generates challenge URL.
///
private string GenerateChallengeUrl(bool noScript)
{
StringBuilder urlBuilder = new StringBuilder();
urlBuilder.Append(Context.Request.IsSecureConnection || this.overrideSecureMode ? RECAPTCHA_SECURE_HOST : RECAPTCHA_HOST);
urlBuilder.Append(noScript ? "/noscript?" : "/challenge?");
urlBuilder.AppendFormat("k={0}", this.PublicKey);
if (this.recaptchaResponse != null && this.recaptchaResponse.ErrorCode != string.Empty)
{
urlBuilder.AppendFormat("&error={0}", this.recaptchaResponse.ErrorCode);
}
return urlBuilder.ToString();
}
Если вы посмотрите http://recaptcha.net/apidocs/captcha/client.html , там написано:
«Чтобы избежать предупреждений браузера , если вы используйте reCAPTCHA на сайте SSL, вам следует заменить http://api.recaptcha.net на https: // api- secure.recaptcha.net . "
Очевидно, recaptcha поддерживает отправку HTTPS. Есть ли у элемента управления ASP.NET какие-либо свойства, которые можно настроить для исходящего URL-адреса? В худшем случае вам может понадобиться использовать Reflector , чтобы изучить код и посмотреть, как он построен.
Библиотека .NET не требует настройки для работы в среде HTTPS. Он будет производным от текущего HttpContext
, если запрос сделан по протоколу HTTPS.
Но есть свойство RecaptchaControl.OverrideSecureMode
, которое можно использовать на всякий случай, если оно не работает должным образом. Установите значение True
для принудительного режима HTTPS.
Обновление :
Кажется, я неправильно понял вопрос. Боюсь, что нет конечной точки HTTPS для проверки reCAPTCHA (между вашим и их сервером).