Delphi的idhttp报508 Loop Detected错误的原因

一般是访问https时才出现“508 Loop Detected”,idhttp+IdSSLIOHandlerSocketOpenSSL,这个在上篇文章中讲过了。

由于该问题网上资料极少,连外文资料也没卵用,起初我也以为是idhttp的重定向设置问题,但确认过没设置错。

idHttp.HandleRedirects := True;

不过相比https,http的话不会出现这个问题,这就很奇怪了,继续测试...

那么发现,访问普通的https是有返回数据的并且没有报“508 Loop Detected”错误,这说明我的代码与控件是没错误的。

而这条地址(具体URL就不公布了)用浏览器访问、抓包是有返回数据的,但问题出在哪了?

然后打开一个我早年写的https调试工具去访问这个地址,居然正常,晕了,都是我写的可独立调用http库,怎么会有这种问题,开始比较源码......

看了N遍,几乎没任何问题,可就是一个报错,一个不报错,突然间想到了一个可能存在问题的地方,就是调试工具中允许自定义UserAgent,立马将其默认内容赋给出问题的软件,

idHttp.Request.UserAgent := ‘Mozilla/5.0 (MSIE 6.0;Windows NT 6.1; rv:23.0) Chrome/53.0.2785.104 Safari/537.36 QQBrowser/9.6.10872.400‘;

放鞭炮!哥解决了,原来是我曾更新过UserAgent,而刚巧这个https地址最近又升级了,严格控制了对用户的访问浏览器类型与版本的要求,反而导致我们这种模拟不严谨的idhttp请求不到数据。

而在UserAgent的设置中,还可以有很多浏览器信息比如Firefox、AppleWebKit等等,但是UserAgent中一定一定要有MSIE 6.0,也就是微软的IE浏览器,我也测试过IE其他版本信息,发现丢包情况比较频繁,而6.0几乎不丢,说明服务商对低版本的IE兼容还是最稳定的。

时间: 2024-10-12 20:02:30

Delphi的idhttp报508 Loop Detected错误的原因的相关文章

Delphi的idhttp报IOHandler value is not valid错误的原因

出现这种问题的原因是由于访问的 URL地址为https或存在其跳转地址为https. 首先单纯使用idhttp是只能访问http,而https则需要搭配IdSSLIOHandlerSocketOpenSSL来实现对https的访问支持,当然还需要在系统目录或编译目标程序的同目录下有ssleay32.dll与libeay32.dll两个SLL协议的支持库. 下面贴出一个简单示例,但对于需要管理cookie的自然要继续完善idhttp的其他项设置,尤其是有些https站是屏蔽直接使用IdCookie

sharepoint报HRESULT:0x80131904的错误的原因和解决方法

在新建文件库的时候出现的.下上传文件和更改权限,都是在报这个HRESULT:0x80131904的错误,基本所有操作都报同一个错误,如下图: 错误原因 其实这个问题其实就是:sharepoint配置文件(sharepoint_config.log)日志过大,占用了数据库空间,无法上传 2.解决方案: 使用sql server 的管理工具进行搜索 压缩数据库日志,先将数据库改为简单模式,如下图: 然后收缩数据库,如下图: 收缩完成后,再把数据库模式改成:完整模式 使用脚本进行收缩,如下: -- S

Jquery.ajax报parseerror Invalid JSON错误的原因和解决方法:不能解析

(默认: 自动判断 (xml 或 html)) 请求失败时调用时间.参数有以下三个:XMLHttpRequest 对象.错误信息.(可选)捕获的错误对象.如果发生了错误,错误信息(第二个参数)除了得到 null 之外,还可能是 "timeout" , "error" , "notmodified" 和 "parsererror" . error事件返回的第一个参数XMLHttpRequest有一些有用的信息: XMLHttpR

EF关于报错Self referencing loop detected with type的原因以及解决办法

1)具体报错 { "Message": "出现错误.", "ExceptionMessage": ""ObjectContent`1"类型未能序列化内容类型"application/json; charset=utf-8"的响应正文.", "ExceptionType": "System.InvalidOperationException", &q

Eclipse编辑java文件报Unhandled event loop exception错误的解

本人Eclipse版本是"eclipse-jee-kepler-SR2-win32-x86_64" 昨天因为换电脑,所以重装了一下软件,装好eclipse之后eclipse是可以使用的(换电脑之前也一直是用这个版本).后来又装了其他一些软件, 为了工作效率,只有边装软件边coding.后来发现再次在Eclipse中编辑java文件就一直会弹出错误提示框.如图. 点开图下面的"Unhandled event loop exception"查看具体的错误,详细错误如下.

ceph集群报 Monitor clock skew detected 错误问题排查,解决

ceph集群报 Monitor clock skew detected 错误问题排查,解决           告警信息如下: [[email protected] ceph]# ceph -w    cluster ddc1b10b-6d1a-4ef9-8a01-d561512f3c1d     health HEALTH_WARN            clock skew detected on mon.ceph-100-81, mon.ceph-100-82            Mon

错误:【Self referencing loop detected with type】

Newtonsoft环境:LINQ+Newtonsoft 问题:若两表间有外键,如图 如果代码按如下写法则会报错:[Self referencing loop detected with type] var result = db.T_ZiGeJingLi.Where(p => p.ID == Convert.ToInt32(ZGZSID)); string json = JsonConvert.SerializeObject(result); 经如下修改语句则会正常: var result =

delphi 用idhttp做web页面数据抓取 注意事项

这里不讨论webbrowse方式了 .直接采用indy的 idhttp  Get post 可以很方便的获取网页数据. 但如果要抓取大量数据 程序稳定运行不崩溃就不那么容易了.这几年也做了不少类似工具 总结了几点 好记性不如烂笔头. 内存泄露 获取页面文本 少不了用到html解析 具体到delphi 估计采用mshtml htmltotext 方法的不少,这个方案再大数据量时就会内存溢出 导致程序崩溃,而这并不是每个程序员都知道.解决的方案:采用自己的html解析类 这里我要感谢 武稀松(csd

记一次使用utl_http方法调用接口,报字符或值错误

背景:ebs系统和其他系统通过utl_http包调用接口,使用log方法记录日志. 某次调用接口,执行到记录日志行报字符或值错误. 查找原因,发现是p_str的长度超过的32747的限制. 解决办法: PROCEDURE log(p_str VARCHAR2) IS BEGIN fnd_file.put_line(fnd_file.log, p_str); dbms_output.put_line(p_str); END; --解决l_messge_clob长度超过3276导致的溢出问题,字符或