我想发送一个帖子请求使用Indy但我面临一些问题。 在一种形式中我有TIdHTTP,一个TIdSSLIOHandlerSocketOpenSSL和TIdCookieManager蒙山这些属性:奇怪的indy重定向后
TIdHTTP:
IdHTTP1.IOHandler := FSSLIO;
IdHTTP1.AllowCookies := True;
IdHTTP1.HandleRedirects := True;
IdHTTP1.ProxyParams.BasicAuthentication := False;
IdHTTP1.ProxyParams.ProxyPort := 0;
IdHTTP1.Request.ContentLength := -1;
IdHTTP1.Request.Accept := 'text/html, */*';
IdHTTP1.Request.BasicAuthentication := False;
IdHTTP1.Request.UserAgent := 'Mozilla/3.0 (compatible; Indy Library)';
IdHTTP1.HTTPOptions := [hoKeepOrigProtocol, hoForceEncodeParams];
IdHTTP1.OnRedirect := IdHTTP1Redirect;
IdHTTP1.CookieManager := IdCookieManager1;
TIdSSLIOHandlerSocketOpenSSL:默认值
TIdCookieManager:默认值
OnRedirect程序:
Handled := True;
在按钮下面的请求:
Params := TStringStream.Create('asdf=asdf',TEncoding.UTF8);
edtmemo1.Text := IdHTTP1.Post('https://www.detran.mg.gov.br/habilitacao/1-habilitacao-quero-ser-condutor/consultar-resultado-exame-legislacao/-/busca_resultado_exames/', Params);
Params.Free;
但返回响应代码为301的错误,但奇怪的是,该位置是我想相同的URL发送,所以它进入一个无限循环。
响应
HTTP/1.1 301 Moved Permanently
Date: Thu, 31 Aug 2017 20:23:32 GMT
Server: Apache
X-Powered-By: PHP/5.3.5
P3P: CP="A politica de privacidade deve estar disponivel no site ou pode ser solicitada via fale conosco."
Set-Cookie: SECCCAKEPHP=e19ttp30m5380ih41qal0gipg2; expires=Sat, 09-Sep-2017 04:23:32 GMT; path=/
Location: https://www.detran.mg.gov.br/habilitacao/1-habilitacao-quero-ser-condutor/consultar-resultado-exame-legislacao/-/busca_resultado_exames/
Cache-Control: max-age=604800
Expires: Thu, 07 Sep 2017 20:23:32 GMT
Content-Length: 0
Content-Type: text/html; charset=utf-8
卷曲测试:
curl -vv -X POST -F 'asdf=asdf' https://www.detran.mg.gov.br/habilitacao/1-habilitacao-quero-ser-condutor/consultar-resultado-exame-legislacao/-/busca_resultado_exames/
我使用curl尝试过同样的请求和响应代码为200 作品有什么可以发生任何想法?
服务器重定向到相同的URL,但它也发送一个Cookie,很可能在初始请求丢失。如果服务器想要返回cookie,这是合理的行为。如果服务器陷入无尽的重定向循环,那是一个不同的问题。嗅探流量以查看curl发送的内容与“TIdHTTP”发送的内容。要嗅探curl的HTTPS流量,可以使用[Fiddler](http://www.telerik.com/fiddler)。要嗅探TIdHTTP的HTTPS流量,可以将'TIdLog ...'组件分配给'TIdHTTP.Intercept'属性,例如'TIdLogFile'。 'TIdHTTP'发送了那个cookie吗? –
你传递什么命令行参数来卷曲?你传递给'TIdHTTP.Post()'什么'Params'?请提供[mcve]显示您实际正在执行的所有事情以重现问题。此外,德尔福2010年8岁,你是否使用同样旧版本的印地?在撰写本文时,目前的Indy版本是10.6.2.5434。 –
我编辑了问题,添加了curl请求,并且使用这些参数,curl不处理重定向,但用200代码进行响应。 我可以在curl中模拟相同的问题的唯一方法是,如果不是https,我使用http。 是的,我知道德尔福2010年是旧的,是的,我使用Indy 10.5.5版本,我们已经尝试更新,至少Indy,但我们遇到很多问题,很不幸我们没有足够的时间或人员来处理它。 – Rigotti