gpt4 book ai didi

xpath - XQuery 解码 HTTP 请求 - 无法解析查询

转载 作者:行者123 更新时间:2023-12-03 17:22:27 31 4
gpt4 key购买 nike

在 XQuery 3.1(在 eXist-db 4.4 下)中,我接收到一个 Controller 的搜索请求,在该 Controller 中我创建了一个参数 docset来自 URL 的查询字符串 text :

else if (starts-with(lower-case($exist:path), "/search")) then
<dispatch xmlns="http://exist.sourceforge.net/NS/exist">
<forward url="{$exist:controller}/search.html"/>
<view>
<forward url="{$exist:controller}/modules/view.xql">
<add-parameter name="docset"
value="{search:search-term-cleaner(request:get-parameter("text","norequest"))}"/>
<add-parameter name="pagetype" value="search"/>
</forward>
</view>
</dispatch>

我将任何传入的此类请求清理到 /search?text=""只允许某些字符进入搜索查询:
declare function search:search-term-cleaner($text as xs:string?) as xs:string?
{
let $cleanterm := replace($text,'[^A-Za-z\+*0-9]', '')

return $cleanterm
};

在两种略有不同的情况下,有两个问题:
  • 如果请求进来 /search?text=some%+text该网站向
  • 投诉

    org.eclipse.jetty.http.BadMessageException: 400: Unable to parse URI query java.lang.IllegalArgumentException: Not valid encoding '%+t'


  • 如果请求进来 /search?text=some+text , Controller 通过sometext 没有 允许的+签到

  • 谷歌搜索这并没有让我找到解决方案,但我在管理 HTTP 解析方面没有经验,并且可能对问题的理解不足以搜索解决方案。

    这是通过本地主机 http://localhost:8081/exist/apps/ .

    最佳答案

    通过request:get-parameter()获取参数时您不需要对 URI 编码的参数进行转义。 %20+会自 Action 为空格字符交给您。

    关于xpath - XQuery 解码 HTTP 请求 - 无法解析查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53324625/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com