环境:golang,使用http client,服务器:iis +aspx.net
动作:head请求或其他
此问题见于各种请求情况。核心是,http在活动期间收到了非预期的信息。
一开始我也很纳-闷,因为下载小文件不出错,大一点的就出错了,而且开始无法找到原因。
但找到原因后就豁然开朗了。

这个消息“Unsolicited response received on idle HTTP channel starting with 。。。”的意思是,客户端已经准备收工了,以为事情已经完了,却收到了服务端-发来的非预期的内容。有这些情况:
1、客户端发起了纯HEAD的请求(Request.RequestType=HEAD),服务端却给你发来了body响应。
一般是因为server端进行了redirect或transfer,在这些转向的过程中丢掉了一些信息,比如我是丢掉了HEAD而用GET取代了,导致服务端发来了body,客户端取得header后,发现还有body,这就出错了。
这个原因应该是大多数人的主要原因。

解决方案是:清理你的请求,中间不要更换requestType,比如get的话始终get,post也一样,尤其要关注HEAD请求,因为server中很容易把这个丢了,因为该信息在aspx.net中不存储在header中,只在request.requestType字段中,而导致使用了默认的get。

比如

Server.TransferRequest(datakey.Substring(5),true,"GET",this.Request.Headers,true);//可支持range,但不能支持HEAD请求,这句是有bug的
Server.TransferRequest(datakey.Substring(5),true, Request.RequestType, this.Request.Headers,true);//可支持range\HEAD请求,这句就完善了

2、响应内容超出了给出的length,这种很难说,很可能也与redirect或自动输出。流有关,你的header里面说的是a个byte,但实际上发送的数据比这个多了。

这个问题的解决方案就是:排除对应的数量错误。

希望这对于golang或http.net开发的人员来说,是个有价值的信息。

解决和根源:Unsolicited response received on idle HTTP channel starting with xxx的更多相关文章

  1. 解决PEnetwork启动的时候提示"An error occured while starting the "TCP/IP Registry Compatibility" Service (2)!"程序将立即退出的问题

    解决PEnetwork启动的时候提示"An error occured while starting the "TCP/IP Registry Compatibility" ...

  2. 解决:Could not parse response code.Server Reply: SSH-2.0-OpenSSH_5.3

    [摘要:办理:org.apache.commons.net.MalformedServerReplyException: Could not parse response code.Server Re ...

  3. [已解决]报错: Error response from daemon: conflict

    报错内容: Error response from daemon: conflict: unable to delete f5b6ef70d79b (must be forced) - image i ...

  4. 解决报错Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: TLS handshaketimeout

    报错: [root@localhost /]# sudo docker pull ubuntuError response from daemon: Get https://registry-1.do ...

  5. restsharp 组件调用返回 gbk 编码的api,中文乱码解决方法。(restsharp response 中文乱码 gbk)

    最近要调一个restful风格的api 用了 一个开源第三方组件,组件还是蛮好用的, 支持直接按参数定义实体类,然后发起请求之前直接 addobject 的方式就把请求参数给添加进去了, 解码的时候可 ...

  6. Incomplete response received from application

    RAILS_ENV=production rake secret 将输出的一大串字码粘贴到rails工程中/config/secrets.yml去,替换掉该文件中的<%= ENV["S ...

  7. 解决报错Error response from daemon: Get https://10.0.0.110/v2/: dial tcp 10.0.0.110:443: connect: connection refused

    修改 #https不需要验证,否则要加上以下配置# 意思就是非安全仓库,加上重启就OK了! vim /lib/systemd/system/docker.service --insecure-regi ...

  8. 解决:Specifying a namespace in include() without providing an app_name和XXX is not a registered namespace问题

    python3 Django 环境下,如果你遇到namespace没有注册以及在根目录下urls.py中的include方法的第二个参数namespace添加之后就出错的问题. 出错问题: 'Spec ...

  9. 异常解决:non-compatible bean definition of same name and class【com.xxx.xxx.XXX】

    昨天同事遇到这样一个问题,意思是spring找到 有相同的实现类名在不同的package目录下. 跟踪他的项目代码并未发现问题.   重新给他的maven项目进行maven install一下. 查看 ...

  10. 使用SSH连接解决git报错:fatal: unable to access 'https://github.com/xxx/xxx.github.io.git/': Proxy CONNECT aborted

    TL;DRs 这个错误的原因和HTTPS的代理配置有关,使用SSH方式连接可以避免这一问题 最近git pull和push的时候总是报错 fatal: unable to access 'https: ...

随机推荐

  1. idea2023最新激活方式

    激活文件下载https://wwtg.lanzouo.com/iAZ1W0kwkgpe 激活教程https://www.666bear.com/244.html

  2. 本地JAR包如何上传私有仓库

    需求背景 有些第三方的jar包需要手动上传到maven私有仓库,以便通过maven来管理依赖. 为简化手动上传的jar包的操作步骤,所以整了个脚本,在使用时只需修改相应变量即可. 脚本示例 #!/bi ...

  3. postman或浏览器可以访问,java不能访问的post请求,连接超时

    代码中用RestTemplate请求url一直是连接超时 可以修改一下jvm配置 -Djava.net.preferIPv4Stack=true

  4. How to Fix SSH Failed Permission Denied

    https://phoenixnap.com/kb/ssh-permission-denied-publickey

  5. 权昌TSC244条码打印机如何加载数据实现大批量打印呢?

    我公司的TSC TTP-244条码打印机,只会改个名称打一张,怎么样改数据或者是加载数据实现大量打印的呢?   解答:   TSC TTP-244条码打印机,是一款性能不错的桌面型条码打印机,最大打印 ...

  6. HTML学习笔记3----制作一个简易网站

    随笔记录方便自己和同路人查阅. #------------------------------------------------我是可耻的分割线--------------------------- ...

  7. rust在windows上编译成liunx可执行程序

    一.rust编译文件 cargo build 或 cargo build --release 发布构建 二.安装 x86_64-unknown-liunx-musl target rustup tar ...

  8. lui - imageViewer - 图片查看器

    imageViewer - 图片查看器 ImageViewer Table Attributes 参数 说明 类型 可选值 默认值 urlList 图片列表 Array - [] onChange 图 ...

  9. sqlmap-1.6.12.11

    Usage: sqlmap.py [options] 选项: -h, --help 显示基本帮助信息并退出 -hh 显示高级帮助信息并退出 --version 显示程序的版本号并退出 -v VERBO ...

  10. Spring RMI 介绍

    Spring RMI RMI全称是Remote Method Invocation-远程方法调用,是纯Java的网络分布式应用系统的核心解决方案之一.Java RMI 支持存储于不同地址空间的程序级对 ...