递归火山软件开发平台

标题: HP_HTTP ,请求阈值出现问题 [打印本页]

作者: 绯陌如夏    时间: 2024-1-16 09:41
标题: HP_HTTP ,请求阈值出现问题
在HP_HTTP服务器中,消息解析完毕 内调用    取请求URL域值() 等方法出现严重问题 (, 下载次数: 214)

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

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

是 hpurl字段.主机吗,该方法不能用...
作者: 创世魂    时间: 2024-1-16 11:33
绯陌如夏 发表于 2024-1-16 09:43
还有一个很重要急需的问题,就是如何获取客户端请求的域名?

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

通过   服务器1.取所有请求头 (连接ID)  
拿到请求头后通过 Host 协议头对应的值  就可以取到域名和端口。
对于host协议头没有提供域名和端口的,可以判定为异常访问,反馈404等信息,终止访问。
作者: Xelloss0618    时间: 2024-1-16 12:30
一、取内容长度返回的是请求头 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
Xelloss0618 发表于 2024-1-16 12:30
一、取内容长度返回的是请求头 Content-Length 的属性值,如果不是 POST,或者请求时没有加上这个头,就会 ...

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

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

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

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

非常冒昧的打扰的你了




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4