我想發送一個帖子請求使用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