绯陌如夏 发表于 2024-1-16 09:41:30

HP_HTTP ,请求阈值出现问题

在HP_HTTP服务器中,消息解析完毕 内调用    取请求URL域值() 等方法出现严重问题

代码是直接在例程中修改的, 希望官方重视一下该支持库

绯陌如夏 发表于 2024-1-16 09:43:02

还有一个很重要急需的问题,就是如何获取客户端请求的域名?

是 hpurl字段.主机吗,该方法不能用...

创世魂 发表于 2024-1-16 11:33:11

绯陌如夏 发表于 2024-1-16 09:43
还有一个很重要急需的问题,就是如何获取客户端请求的域名?

是 hpurl字段.主机吗,该方法不能用... ...

通过   服务器1.取所有请求头 (连接ID)
拿到请求头后通过 Host 协议头对应的值就可以取到域名和端口。
对于host协议头没有提供域名和端口的,可以判定为异常访问,反馈404等信息,终止访问。

Xelloss0618 发表于 2024-1-16 12:30:18

一、取内容长度返回的是请求头 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 22:35:41

Xelloss0618 发表于 2024-1-16 12:30
一、取内容长度返回的是请求头 Content-Length 的属性值,如果不是 POST,或者请求时没有加上这个头,就会 ...

+1分

绯陌如夏 发表于 2024-1-18 00:21:34

Xelloss0618 发表于 2024-1-16 12:30
一、取内容长度返回的是请求头 Content-Length 的属性值,如果不是 POST,或者请求时没有加上这个头,就会 ...

通熟易懂,看过你的帮助后学到很多了.我还有一个小问题:

我们在客户端发起HTTP请求时,会在服务端先后触发[请求数据进入] [消息解析完毕]两个事件,该怎么判断没有BODY报文时的情况呢?

经过反复测试POST/GET等方式发现.取内容长度 真的不靠谱, 可是请求头的Content-Length 又是可以随意定义的,有没有可以在[消息解析完毕]事件中调用的协议层代码来判断本次请求BODY报文为空的情况呢?

非常冒昧的打扰的你了
页: [1]
查看完整版本: HP_HTTP ,请求阈值出现问题