Я работаю над проектом, включающим логин и загрузку, для более чем 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:
Я уже пробовал
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
для данного сайта).
См. Http://stackoverflow.com/questions/6683127/delphi-idhttpssl о том, как добавить библиотеки SSL в ваш проект. –
Прочитайте «Как создать минимальный, полный и проверенный пример». Если вы не можете предоставить такой пример, не спрашивайте, потому что никто не может догадаться, что происходит там http://stackoverflow.com/help/mcve – smooty86
вам не нужно делиться URL-адресом, используйте общедоступный сайт, поддерживающий https, например https : //www.google.com. это упростит для вас тест на запись теста записи быстрее. – none