Мы начали использовать элемент управления recaptcha в ASP.NET, и он работает нормально. но одно из требований, которое у нас есть, заключается в том, что весь исходящий трафик проходит через Https.
Я знаю, что recaptcha поддерживает https, но не ясно, как настроить (или даже если это настраивается) при использовании опции плагина ASP.NET.
кто-нибудь имеет опыт?
Я немного подробнее расскажу о том, что нашел до сих пор ...
Пакет Recaptcha содержит 3 открытых класса
RecaptchaControl,
RecaptchaValidator
а также
RecaptchaResponse
RecaptchaControl
- это элемент управления Asp.NET, специфичные для рекапчи методы, похоже, касаются тем / внешнего вида.
Экземпляр Validator имеет поле 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------------------------------------
/// <summary>
/// This function generates challenge URL.
/// </summary>
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();
}