18.2.6 SHTTPD对URI的分析设计

本文介绍了SHTTPD服务器如何解析URI来确定客户端请求的具体资源,包括资源位置的确定及URI中保留与危险字符集的处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

18.2.6  SHTTPDURI的分析设计

URI是客户端请求主机网络资源的位置,对于URI的分析主要包含如下需要特别注意的部分:

资源位置的确定。请求主机的位置以“/”开始,其后为相对路径,要注意请求的路径中使用“../../../”的形式取得请求范围的扩大。资源位置的最后一个“/”之后的字符串为实际请求的文件名,需要根据此文件名判定请求资源的类型,例如请求一个常规文件、请求一个目录来获得目录下面所有文件的列表、请求CGI等。

URI资源中的“保留”和“危险”字符集。此字符集中的字符等同于它们的“% HEX HEX”编码,即对于一个以“%”开头的字符,需要进行转换后使用其真正的值。可以使用如下代码来进行转换:

 

#define HEXTOI(x)  (isdigit(x) ? x - '0' : x - 'W')

switch (src[i])

{

case '%':

    if (isxdigit(((unsigned char *) src)[i + 1]) &&

        isxdigit(((unsigned char *) src)[i + 2]))

    {

        a = tolower(((unsigned char *)src)[i + 1]);

        b = tolower(((unsigned char *)src)[i + 2]);

        dst[j] = (HEXTOI(a) << 4) | HEXTOI(b);

        i += 2;

    }

}

 

如果为“%”开头的字符,则将其后面的两个字符拼接后转换成一个字符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值