我正在生成一个编码值以便在我的URL中传递,问题是,我们的SEO管理器配置应用程序,传递小写URL,他说他不会更改配置。现在我必须以某种方式编码我的网址,大写字母或整个字符串由其字符代码编码,所以我可以传递它而不会破坏主要值,
例如,我得到的base64字符串如下:
aHR0cDovL2xvY2FsaG9zdDoxMzUwL2hvdGVscy9nMy8xMzk1LTA1LTEwLzEvOTI3MjIyZmY
but it turn to be like this, when is passed to controller:
ahr0cdovl2xvy2fsag9zddoxmzuwl2hvdgvscy9nmy8xmzk1lta1ltewlzevoti3mjiyzmy
无法读取...解码时导致问题的原因。
答案 0 :(得分:1)
如果它将被转换为控件的小写,则无法使用base64对其进行编码,而base64依赖于使用大写字符。
如果您的管理员坚持的配置是传入或传出的查询字符串参数被错误地降低,则应告知他他违反了URI规范,特别是query string部分。当然,最终由您自己的内部公司选择是否只需要内部URI中的小写,但是您不应该假设处理URI的其他应用程序将以这样的方式运行。
正如@sachin所述,如果你可以把它作为一个POST请求(而不是像我现在假设它那样的GET),并且只要你的经理在发送它们时不低于那些:/你可以发送这些数据通过POST。
或者,您可以使用Base32来解决此问题,它仅依赖于大写字符,但您可以在解码(现在为Base32)字符串之前将接收到的值转换为大写字母。这是一个非常荒谬的解决方案......
为了清楚起见:“lol”会在Base32中编码为“NRXWY ===”,然后将其设置为“nrxwy ===”,然后你可以将其大写回“NRXWY ===”解码。
这是两个执行Base32编码的NuGet包: