gpt4 book ai didi

java - org.reSTLet.routing.Router 似乎不接受编码的斜杠

转载 作者:太空宇宙 更新时间:2023-11-04 13:04:25 25 4
gpt4 key购买 nike

我正在使用 ReSTLet,并且在使用路由器模板时遇到问题,该模板中的变量包含编码的斜杠。详细信息如下:

当我使用这条路线时:

/blob/sqlserver/{uniqueid}

并传递这个(注意%2F是/):

/blob/sqlserver/Refinance-Other%2FFRM%2F660-700%2F4.00-4.50%2Fproperties-4.00-4.50.csv

或者这个:

/blob/sqlserver/Refinance-Other/FRM/660-700/4.00-4.50/properties-4.00-4.50.csv

我收到了 404

如果我使用这个路由器:

/blob/sqlserver/{purpose}/{type}/{creditscore}/{interestrate}/{file}

并传递这个:

/blob/sqlserver/Refinance-Other/FRM/660-700/4.00-4.50/properties-4.00-4.50.csv

它可以工作,但我不能这样做,因为我无法控制谁向我发送这个 URI 并且变量会改变,所以它必须是编码的斜杠。

为了进一步测试这一点,我还再次尝试了这个模板:

/blob/sqlserver/{uniqueid}

还使用了 MODE_STARTS_WITH

.setMatchingMode(Template.MODE_STARTS_WITH);

当我这样做时,它确实发现了这个:

/blob/sqlserver/Refinance-Other/FRM/660-700/4.00-4.50/properties-4.00-4.50.csv

但我只得到“Refinance-Other”作为 uniqueid 下的变量。

但是,编码后的斜杠仍然不起作用,这看起来很奇怪?为什么它适用于上述带有 MODE_STARTS_WITH 的非编码 URI 而不是此 URI?:

/blob/sqlserver/Refinance-Other%2FFRM%2F660-700%2F4.00-4.50%2Fproperties-4.00-4.50.csv

最佳答案

实际上,URL 编码在到达我之前就已经被解码了,这两篇文章帮助我解决了这个问题。作为证明,双重编码有效:

Is a slash ("/") equivalent to an encoded slash ("%2F") in the path portion of an HTTP URL

ALLOW_ENCODED_SLASH on AWS Elasticbeanstalk

并查看对此票证的第一个响应:

https://issues.jboss.org/browse/JBSEAM-3990

关于java - org.reSTLet.routing.Router 似乎不接受编码的斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34625223/

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