idHttp:站点为https时出现错误500内部服务器

时间:2016-08-06 15:14:40

标签: delphi delphi-xe indy indy10 idhttp

我正在开发一个涉及登录和下载的项目,对于20多个站点,在某些情况下,这些站点非常相似,甚至它们的结构都是相同的 我最近遇到了一个问题,一些相同的结构化网站是http,有些网站是HttpsHttp网站可以正常工作,但Https个当我尝试登录时,第一个post返回错误500 internal server,响应代码显示

  

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

出于隐私原因,我无法共享任何网站的网址
修改:
我做了关于设置处理程序的建议

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 做同样的事情?

编辑2(新网站):
因为此网站的问题与之前的网站非常相似,所以我决定不为此创建新问题

我收到一个新网站的错误500,当我尝试手动访问该网站并登录时,我在Firefox中遇到This Connection is Untrusted错误,其他浏览器中的类似错误是图片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登录时会发生错误。
还有一件事,我同时使用httpAnalyzerfiddler,但当我运行我的程序时,他们都不会选择网站postsgets(他们只 在我使用我的程序时无效,我尝试postget此特定网站。)

1 个答案:

答案 0 :(得分:0)

  

我刚注意到windows internet explorer无法打开网站!!它会返回错误:

     

在高级设置中启用TLS 1.0,TLS 1.1和TLS 1.2,然后尝试再次连接到somesite.com。如果此错误仍然存​​在,请与您的站点管理员联系。

启用sslvTLSv1媒体资源中的sslvTLSv1_1sslvTLSv1_2TIdSSLIOHandlerSocketOpenSSL.SSLOptions.SSLVersions标记。

  

我认为该网站的证书是假的,如果我去设置并取消选中

     

检查发布商证书撤销

     在Internet Explorer中的

选项,该网站打开!

TIdSSLIOHandlerSocketOpenSSL.OnVerifyPeer事件分配处理程序,并为要接受的任何证书返回True。