acl
3.5.3.0
|
#include <http_header.hpp>
Public 成员函数 | |
http_header (dbuf_guard *dbuf=NULL) | |
http_header (const char *url, dbuf_guard *dbuf=NULL, bool encoding=true) | |
http_header (int status, dbuf_guard *dbuf=NULL) | |
http_header (const HTTP_HDR_RES &hdr_res, dbuf_guard *dbuf=NULL) | |
http_header (const HTTP_HDR_REQ &hdr_req, dbuf_guard *dbuf=NULL) | |
virtual | ~http_header (void) |
void | reset (void) |
http_header & | set_proto_version (const char *version) |
http_header & | set_request_mode (bool onoff) |
http_header & | add_entry (const char *name, const char *value, bool replace=true) |
const char * | get_entry (const char *name) const |
http_header & | set_content_length (long long int n) |
long long int | get_content_length () const |
http_header & | set_range (long long from, long long to) |
http_header & | set_range_total (long long total) |
void | get_range (long long int *from, long long int *to) |
http_header & | set_content_type (const char *value) |
http_header & | set_keep_alive (bool on) |
bool | get_keep_alive () const |
http_header & | set_upgrade (const char *value="websocket") |
const char * | get_upgrade (void) const |
http_header & | add_cookie (const char *name, const char *value, const char *domain=NULL, const char *path=NULL, time_t expires=0) |
http_header & | add_cookie (const HttpCookie *cookie) |
const HttpCookie * | get_cookie (const char *name) const |
bool | is_request (void) const |
bool | build_request (string &buf) const |
http_header & | set_url (const char *url, bool encoding=true) |
http_header & | set_host (const char *value) |
const char * | get_host () const |
http_header & | set_method (http_method_t method) |
http_header & | set_method (const char *method) |
http_method_t | get_method (string *buf=NULL) const |
http_header & | accept_gzip (bool on) |
http_header & | set_param_override (bool yes) |
http_header & | add_param (const char *name, const char *value) |
http_header & | add_int (const char *name, short value) |
http_header & | add_int (const char *name, int value) |
http_header & | add_int (const char *name, long value) |
http_header & | add_int (const char *name, unsigned short value) |
http_header & | add_int (const char *name, unsigned int value) |
http_header & | add_int (const char *name, unsigned long value) |
http_header & | add_format (const char *name, const char *fmt,...) ACL_CPP_PRINTF(3 |
http_header http_header & | add_int (const char *name, long long int value) |
http_header & | add_int (const char *name, unsigned long long int value) |
http_header & | set_ws_origin (const char *url) |
http_header & | set_ws_key (const void *key, size_t len) |
http_header & | set_ws_key (const char *key) |
http_header & | set_ws_protocol (const char *proto) |
http_header & | set_ws_version (int ver) |
const char * | get_ws_origin (void) const |
const char * | get_ws_key (void) const |
const char * | get_ws_protocol (void) const |
int | get_ws_version (void) const |
http_header & | set_ws_accept (const char *key) |
const char * | get_ws_accept (void) const |
bool | redirect (const char *url) |
http_header & | set_redirect (unsigned int n=5) |
unsigned int | get_redirect (void) const |
virtual void | redicrect_reset (void) |
bool | build_response (string &buf) const |
http_header & | set_status (int status) |
int | get_status (void) const |
http_header & | set_chunked (bool on) |
bool | chunked_transfer (void) const |
http_header & | set_cgi_mode (bool on) |
bool | is_cgi_mode () const |
http_header & | set_transfer_gzip (bool on) |
bool | is_transfer_gzip () const |
Public 成员函数 继承自 acl::dbuf_obj | |
dbuf_obj (dbuf_guard *guard=NULL) | |
virtual | ~dbuf_obj () |
int | pos () const |
dbuf_guard * | get_guard () const |
静态 Public 成员函数 | |
static void | date_format (char *out, size_t size, time_t t) |
static void | uri_unsafe_correct (bool on) |
HTTP 头类,可以构建请求头或响应头
在文件 http_header.hpp 第 19 行定义.
acl::http_header::http_header | ( | dbuf_guard * | dbuf = NULL | ) |
构造函数
dbuf | {dbuf_guard*} 非空时将做为内存分配池 |
acl::http_header::http_header | ( | const char * | url, |
dbuf_guard * | dbuf = NULL , |
||
bool | encoding = true |
||
) |
HTTP 请求头构造函数
url | {const char*} 请求的 URL,url 格式示例如下: http://www.test.com/ /cgi-bin/test.cgi http://www.test.com/cgi-bin/test.cgi http://www.test.com/cgi-bin/test.cgi?name=value /cgi-bin/test.cgi?name=value 如果该 url 中有主机字段,则内部自动添加主机; 如果该 url 中有参数字段,则内部自动进行处理并调用 add_param 方法; 调用该函数后用户仍可以调用 add_param 等函数添加其它参数; 当参数字段只有参数名没有参数值时,该参数将会被忽略,所以如果想 单独添加参数名,应该调用 add_param 方法来添加 |
dbuf | {dbuf_guard*} 非空时将做为内存分配池 |
encoding | {bool} 是否对存在于 url 中的参数进行 url 编码,如果为 true 则会重新解析 url 并重新对 url 中的参数进行编码,否则则 url 保持原样 |
acl::http_header::http_header | ( | int | status, |
dbuf_guard * | dbuf = NULL |
||
) |
HTTP 响应头构造函数
status | {int} 状态字如:1xx, 2xx, 3xx, 4xx, 5xx |
dbuf | {dbuf_guard*} 非空时将做为内存分配池 |
acl::http_header::http_header | ( | const HTTP_HDR_RES & | hdr_res, |
dbuf_guard * | dbuf = NULL |
||
) |
根据 C语言 的 HTTP 响应头进行构造
hdr_res | {const HTTP_HDR_RES&} |
dbuf | {dbuf_guard*} 非空时将做为内存分配池 |
acl::http_header::http_header | ( | const HTTP_HDR_REQ & | hdr_req, |
dbuf_guard * | dbuf = NULL |
||
) |
根据 C语言 的 HTTP 请求头进行构造
hdr_req | {const HTTP_HDR_REQ&} |
dbuf | {dbuf_guard*} 非空时将做为内存分配池 |
|
virtual |
http_header& acl::http_header::accept_gzip | ( | bool | on | ) |
设置 HTTP 请求头中是否允许接收压缩数据,对应的 HTTP 头字段为: Accept-Encoding: gzip, deflate,但目前仅支持 gzip 格式
on | {bool} 如果为 true 则自动添加 HTTP 压缩头请求 |
http_header& acl::http_header::add_cookie | ( | const char * | name, |
const char * | value, | ||
const char * | domain = NULL , |
||
const char * | path = NULL , |
||
time_t | expires = 0 |
||
) |
向 HTTP 头中添加 cookie
name | {const char*} cookie 名 |
value | {const char*} cookie 值 |
domain | {const char*} 所属域 |
path | {const char*} 存储路径 |
expires | {time_t} 过期时间,当该值为 0 时表示不过期,
|
http_header& acl::http_header::add_cookie | ( | const HttpCookie * | cookie | ) |
http_header& acl::http_header::add_entry | ( | const char * | name, |
const char * | value, | ||
bool | replace = true |
||
) |
向 HTTP 头中添加字段
name | {const char*} 字段名,非空指针 |
value | {const char*} 字段值,非空指针 |
replace | {bool} 如果存在重复项时是否自动覆盖旧数据 |
http_header& acl::http_header::add_format | ( | const char * | name, |
const char * | fmt, | ||
... | |||
) |
http_header& acl::http_header::add_int | ( | const char * | name, |
short | value | ||
) |
http_header& acl::http_header::add_int | ( | const char * | name, |
int | value | ||
) |
http_header& acl::http_header::add_int | ( | const char * | name, |
long | value | ||
) |
http_header& acl::http_header::add_int | ( | const char * | name, |
unsigned short | value | ||
) |
http_header& acl::http_header::add_int | ( | const char * | name, |
unsigned int | value | ||
) |
http_header& acl::http_header::add_int | ( | const char * | name, |
unsigned long | value | ||
) |
http_header http_header& acl::http_header::add_int | ( | const char * | name, |
long long int | value | ||
) |
http_header& acl::http_header::add_int | ( | const char * | name, |
unsigned long long int | value | ||
) |
http_header& acl::http_header::add_param | ( | const char * | name, |
const char * | value | ||
) |
向请求的 URL 中添加参数对,当只有参数名没有参数值时则: 1、参数名非空串,但参数值为空指针,则 URL 参数中只有:{name} 2、参数名非空串,但参数值为空串,则 URL参数中为:{name}=
name | {const char*} 参数名,不能为空指针 |
value | {const char*} 参数值,当为空指针时,仅添加参数名, |
bool acl::http_header::build_request | ( | string & | buf | ) | const |
创建 HTTP 请求头数据
buf | {string&} 存储结果数据 |
bool acl::http_header::build_response | ( | string & | buf | ) | const |
创建 HTTP 响应头数据
buf | {string&} 存储结果数据 |
|
inline |
|
static |
将整型的日期转换为 rfc1123 字符串格式的日期
|
inline |
在文件 http_header.hpp 第 129 行定义.
const HttpCookie* acl::http_header::get_cookie | ( | const char * | name | ) | const |
从 HTTP 头中获得对应名称的 cookie 对象
name | {const char*} cookie 名 |
const char* acl::http_header::get_entry | ( | const char * | name | ) | const |
从 HTTP 头中获得指定的头部字段
name | {const char*} 字段名,非空指针 |
|
inline |
|
inline |
http_method_t acl::http_header::get_method | ( | string * | buf = NULL | ) | const |
当作为请求头时,本函数取得当前邮件头的请求方法
buf | {string*} 存储用字符串表示的请求方法 |
void acl::http_header::get_range | ( | long long int * | from, |
long long int * | to | ||
) |
获得由 set_range 设置的分段请求位置值
from | {http_off_t*} 非空时存储起始位置偏移 |
to | {http_off_t*} 非空时存储结束位置偏移 |
unsigned int acl::http_header::get_redirect | ( | void | ) | const |
获取通过 set_redirect 设置的允许的最大重定向次数
|
inline |
|
inline |
在文件 http_header.hpp 第 197 行定义.
|
inline |
在文件 http_header.hpp 第 385 行定义.
|
inline |
在文件 http_header.hpp 第 369 行定义.
|
inline |
在文件 http_header.hpp 第 364 行定义.
|
inline |
在文件 http_header.hpp 第 374 行定义.
|
inline |
在文件 http_header.hpp 第 379 行定义.
|
inline |
bool acl::http_header::is_request | ( | void | ) | const |
判断是否是 HTTP 请求头
|
inline |
|
inlinevirtual |
bool acl::http_header::redirect | ( | const char * | url | ) |
url 重定向
url | {const char*} 重定向的 URL,格式为: http://xxx.xxx.xxx/xxx 或 /xxx 如果是前者,则自动从中取出 HOST 字段,如果是后者,则 延用之前的 HOST |
void acl::http_header::reset | ( | void | ) |
重置 HTTP 头信息同时将上次的临时资源释放
http_header& acl::http_header::set_cgi_mode | ( | bool | on | ) |
http_header& acl::http_header::set_chunked | ( | bool | on | ) |
http_header& acl::http_header::set_content_length | ( | long long int | n | ) |
http_header& acl::http_header::set_content_type | ( | const char * | value | ) |
http_header& acl::http_header::set_host | ( | const char * | value | ) |
http_header& acl::http_header::set_keep_alive | ( | bool | on | ) |
设置 HTTP 头中的 Connection 字段,是否保持长连接 不过,目前并未真正支持长连接,即使设置了该标志位, 则得到响应数据后也会主动关闭连接
on | {bool} 是否保持长连接 |
http_header& acl::http_header::set_method | ( | http_method_t | method | ) |
设置 HTTP 协议的请求方法,如果不调用此函数,则默认用 GET 方法
method | {http_method_t} HTTP 请求方法 |
http_header& acl::http_header::set_method | ( | const char * | method | ) |
设置 HTTP 协议的请求方法,本函数允许用户扩展 HTTP 请求方法, 通过该函数设置的请求方法仅影响 HTTP 请求过程
method | {const char*} 请求方法 |
http_header& acl::http_header::set_param_override | ( | bool | yes | ) |
http_header& acl::http_header::set_proto_version | ( | const char * | version | ) |
http_header& acl::http_header::set_range | ( | long long | from, |
long long | to | ||
) |
设置 HTTP 请求头(响应头)中的 Range 字段,用于分段请求(响应)数据, 多用于支持断点续传的 WEB 服务器中
from | {http_off_t} 起始偏移位置,下标从 0 开始,该 值当 >= 0 时才有效 |
to | {http_off_t} 请求结束偏移位置,下标从 0 开始, 在请求头中当该值输入 < 0 时,则认为是请求从起始位置开始至最终长度位置 |
http_header& acl::http_header::set_range_total | ( | long long | total | ) |
http_header& acl::http_header::set_redirect | ( | unsigned int | n = 5 | ) |
设置重定向次数,如果该值 == 0 则不主动进行重定向,否则 进行重定向且重定向的次数由该值决定
n | {int} 允许重定向的次数 |
http_header& acl::http_header::set_request_mode | ( | bool | onoff | ) |
http_header& acl::http_header::set_status | ( | int | status | ) |
http_header& acl::http_header::set_transfer_gzip | ( | bool | on | ) |
http_header& acl::http_header::set_upgrade | ( | const char * | value = "websocket" | ) |
http_header& acl::http_header::set_url | ( | const char * | url, |
bool | encoding = true |
||
) |
设置请求的 URL,url 格式示例如下: 1、http://www.test.com/ 2、/cgi-bin/test.cgi 3、http://www.test.com/cgi-bin/test.cgi 3、http://www.test.com/cgi-bin/test.cgi?name=value 4、/cgi-bin/test.cgi?name=value 5、http://www.test.com 如果该 url 中有主机字段,则内部自动添加主机; 如果该 url 中有参数字段,则内部自动进行处理并调用 add_param 方法; 调用该函数后用户仍可以调用 add_param 等函数添加其它参数; 当参数字段只有参数名没有参数值时,该参数将会被忽略,所以如果想 单独添加参数名,应该调用 add_param 方法来添加
url | {const char*} 请求的 url,非空指针 |
encoding | {bool} 是否对存在于 url 中的参数进行 url 编码,如果为 true 则会重新解析 url 并重新对 url 中的参数进行编码,否则则 url 保持原样 |
http_header& acl::http_header::set_ws_accept | ( | const char * | key | ) |
http_header& acl::http_header::set_ws_key | ( | const void * | key, |
size_t | len | ||
) |
http_header& acl::http_header::set_ws_key | ( | const char * | key | ) |
http_header& acl::http_header::set_ws_origin | ( | const char * | url | ) |
http_header& acl::http_header::set_ws_protocol | ( | const char * | proto | ) |
http_header& acl::http_header::set_ws_version | ( | int | ver | ) |
|
static |
设置标志位,针对 HTTP 请求的 URI 中的 ? 问号被转义(即被转成 %3F)的请求是否 做兼容性处理,内部缺省为做兼容性处理
on | {bool} 为 true 表示做兼容性处理 |