libhv
libhv copied to clipboard
修复 hv_parse_url 处理 '#' 和 '?' 顺序优先级 bug
解决类似“/xxx/xxx.htm#xxx?xxxx”的顺序导致解析结果有错误。
根据 RFC 3986 标准定义,URI 的通用语法结构为:
scheme:[//authority]path[?query][#fragment]
(方括号表示可选,但顺序不可调换)
标准格式顺序确实是这样,但是#字符的出现代表后面可以是任意剩余字符,其中就可以出现?,而且代码 http/HttpMessage.cpp 中对 HttpRequest::Path() 的处理也是有?与#做了优先级处理的,经过主流浏览器地址栏与开发者工具观察请求报文也是可以证实确实存在优先级处理,#如果比?优先出现那么后面都属于fragment而不会识别成path=/xxx/xxx.htm#xxx,query=xxxx,fragment=空