繁体   English   中英

对URL区分大小写不区分大小写

[英]case sensitive to URL case insensitive

我正在生成一个编码值以在URL中传递,问题是我们的SEO经理配置了应用程序以传递小写URL,他说他不会更改配置。 现在我必须以某种方式对我的url进行编码,即大写字母或整个字符串都由其字符代码编码,因此我可以通过它而不会破坏主值,

例如,我得到的base64字符串如下:

aHR0cDovL2xvY2FsaG9zdDoxMzUwL2hvdGVscy9nMy8xMzk1LTA1LTEwLzEvOTI3MjIyZmY
but it turn to be like this, when is passed to controller:
ahr0cdovl2xvy2fsag9zddoxmzuwl2hvdgvscy9nmy8xmzk1lta1ltewlzevoti3mjiyzmy

无法读取...在解码时会引起问题。

如果将base64转换为小写字母,则无法使用base64对其进行编码,因为base64依赖于使用大写字符。

但是,如果经理坚持的配置是错误地将输入或输出查询字符串参数小写为小写,则应通知他,他违反了URI规范,特别是查询字符串部分。 当然,是否只希望内​​部URI中的小写字母最终取决于您自己的内部公司,但是您不应假定其他处理URI的应用程序将像这样运行。

如上面的@sachin所述,如果您可以发出POST请求(而不是像现在假设的GET),并且前提是您的经理也不要降低发送它们的时间:/您可以通过以下方式发送此数据:开机自检

另外,您可以改用Base32来解决此问题,它仅依赖于大写字符,但是您可以在解码(现在为Base32)字符串之前,先将接收到的值转换为大写形式。 不过,这是一个非常荒谬的解决方案...

只需清楚一点:“ lol”在Base32中将编码为“ NRXWY ===”,然后将其小写为“ nrxwy ===”,然后您可以在解码之前将其大写回到“ NRXWY ===”。

这是两个执行Base32编码的NuGet软件包:

  1. Base32按照RFC4648 这里和作者声称它的测试,工作正常。

  2. 另一个软件包看起来很吸引人,因为它在这里支持zBase32,zBase32的优点是它已经仅使用小写字符,因此您不必担心更改大小写。 搬运工/作者已包含有关如何获取zBase32编码的说明

这两个(Base32和zBase32)都使用Base64字符的子集,因此它们都可以与URI一起正常使用,所有使用的字符在URI中均有效(utf-8内容无关紧要,因为您只是在编码字节,因此从Base32解码时,您将获得相同的字节数)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM