2016-08-06 30 views
0

Я работаю над проектом, включающим логин и загрузку, для более чем 20 сайтов, в некоторых случаях сайты очень похожи, даже их структура одинакова
У меня есть столкнулись с проблемой в последнее время, некоторые из тех же самых структурированных сайтов являются http и некоторые из них Https, то Http из них в порядке и работают нормально, но Https те, на самом первом post возвращает ошибку 500 internal server, когда я пытаюсь войти в систему, код ответа показываетidHttp: ошибка 500 внутренний сервер, когда сайт https

for security reasons you can not access ...

Мне нужно изменить мой подход с помощью https сайтов? Как я могу это исправить ?
мой код:

mIdHttp := TIdHttp.create(nil); 
mIdHttp.AllowCookies := true; 
mIdHttp.HandleRedirects := true; 
mIdHttp.Request.Charset := 'utf-8'; 
requestList.add('the post info from http analyzer'); 
mIdHttp.post('site login url', requestList, responseCode); // error happens here 

по причинам конфиденциальности я не могу разделить URL для любого из сайтов
Edit:
я сделал то, что было предложено о создании обработчика

LHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil); 
mIdHttp.IOHandler:=LHandler; 

но это не сработало! (Я также загрузил две библиотеки DLL)

Новостройки:
я просто заметил, что Windows Internet Explorer не могу открыть сайт либо !! и он возвращает ошибку:

Turn on TLS 1.0, TLS 1.1, and TLS 1.2 in Advanced settings and try connecting to somesite.com again. If this error persists, contact your site administrator. 

Я думаю сертификат для сайта является подделкой, и если я иду в настройки и снимите флажок

check for publisher certifcate revocation 

в Internet Explorer, сайт открывается !, это причина, по которой я получаю сообщение об ошибке? как я могу сделать то же самое с idHttp?

Edit 2 (Новый сайт):
, потому что проблема с этим сайтом очень похож на предыдущий, я решил не создать новый вопрос для этого

I» m получить ошибку 500 с новым сайтом, когда я пытаюсь вручную перейти на сайт и войти, я получаю ошибку This Connection is Untrusted в firefox и аналогичную ошибку в других браузерах, вот фотография o ошибки firefox:
enter image description here

Я уже пробовал

LHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil); 
//LHandler.SSLOptions.SSLVersions := [sslvTLSv1, sslvTLSv1_1, sslvTLSv1_2]; 
LHandler.OnVerifyPeer := OnVerifyPeer; 
mIdHttp.IOHandler := LHandler; 

function OnVerifyPeer(certificate: TIdX509; AOk: Boolean; Adepth:Integer; AError: Integer): boolean; 
begin 
    Result := true; 
end; 

, но я все еще получаю ту же ошибку
я должен также отметить, что в данном конкретном случае, используя idHttp.Getне причиной какой-либо ошибки, то ошибка происходит, когда я пытаюсь Post для входа.
еще одна вещь, я использую оба httpAnalyzer и fiddler, но ни один из них не может подобрать сайт posts или gets, когда я запускаю мою программу (они только не работает, когда я использую мою программу и я стараюсь post и get для данного сайта).

+1

См. Http://stackoverflow.com/questions/6683127/delphi-idhttpssl о том, как добавить библиотеки SSL в ваш проект. –

+0

Прочитайте «Как создать минимальный, полный и проверенный пример». Если вы не можете предоставить такой пример, не спрашивайте, потому что никто не может догадаться, что происходит там http://stackoverflow.com/help/mcve – smooty86

+0

вам не нужно делиться URL-адресом, используйте общедоступный сайт, поддерживающий https, например https : //www.google.com. это упростит для вас тест на запись теста записи быстрее. – none

ответ

0

Я только что заметил, что интернет-проводник Windows не может открыть сайт! и он возвращает ошибку:

Включите TLS 1.0, TLS 1.1 и TLS 1.2 в дополнительных настройках и снова подключитесь к somesite.com. Если эта ошибка повторяется, обратитесь к администратору вашего сайта.

Включить sslvTLSv1, sslvTLSv1_1 и sslvTLSv1_2 флаги в TIdSSLIOHandlerSocketOpenSSL.SSLOptions.SSLVersions собственности.

я думаю, что сертификат сайта является поддельным, и если я иду в настройки и снимите флажок

для издателя отзыва: Сертификат

опции в Internet Explorer, открывает сайт!

Назначить обработчик события TIdSSLIOHandlerSocketOpenSSL.OnVerifyPeer и вернуть его True для любого сертификата, который вы хотите принять.

+0

Я сделал 'LHandler.SSLOptions.SSLVersions: = [sslvTLSv1, sslvTLSv1_1, sslvTLSv1_2];' и назначил обработчик OnVerifyPeer, но все же та же ошибка, используя 'Get', также дает ту же ошибку, я должен также упомянуть, что когда Я поставил точку останова в 'onVerifypeer', она никогда не вызывается, это нормально? –

+0

Я столкнулся с очень похожей проблемой с новым сайтом, пожалуйста, прочитайте Edit 2 –

 Смежные вопросы

  • Нет связанных вопросов^_^