Xelloss0618 发表于 2024-1-16 12:30 通熟易懂,看过你的帮助后学到很多了.我还有一个小问题: 我们在客户端发起HTTP请求时,会在服务端先后触发[请求数据进入] [消息解析完毕]两个事件,该怎么判断没有BODY报文时的情况呢? 经过反复测试POST/GET等方式 发现.取内容长度 真的不靠谱, 可是请求头的Content-Length 又是可以随意定义的,有没有可以在[消息解析完毕]事件中调用的协议层代码来判断本次请求BODY报文为空的情况呢? 非常冒昧的打扰的你了 |
Xelloss0618 发表于 2024-1-16 12:30 +1分 |
一、取内容长度返回的是请求头 Content-Length 的属性值,如果不是 POST,或者请求时没有加上这个头,就会返回0。 也可能是某些事件里还没解析好请求头,所以获取不到。 二、字段数量不是一个有效的常量值,它只是用来表示“HPURL字段/EnHttpUrlField”有多少个有效常量,不应该使用。 <scheme>://<user>:<password>@<host>:<port>/<path>?<query>#<fragment> 上面是一个URL地址的格式,例如 http://user:password@baidu.com:80/s?wd=voldec#header 其中用户(user)、片段(fragment)非常少用,返回空白相当正常。 至于 概要(scheme) 和 主机(host) 为什么会空,那是因为在请求行里不会包含这些内容,只剩下访问路径,例如: POST /s?wd=voldec#header HTTP/1.1 所以Host应该通过请求头获取(有提供的话) |
绯陌如夏 发表于 2024-1-16 09:43 通过 服务器1.取所有请求头 (连接ID) 拿到请求头后通过 Host 协议头对应的值 就可以取到域名和端口。 对于host协议头没有提供域名和端口的,可以判定为异常访问,反馈404等信息,终止访问。 |
还有一个很重要急需的问题,就是如何获取客户端请求的域名? 是 hpurl字段.主机吗,该方法不能用... |
|Archiver|手机版|小黑屋|递归火山软件开发平台
( 鄂ICP备18029190号 )
GMT+8, 2025-3-13 01:37 , Processed in 0.092977 second(s), 22 queries .
Powered by Discuz! X3.4
© 2001-2017 Comsenz Inc.