0

我正在尝试在将参数转换为 base 64 定义后发送参数geddy.js route

router.get(routing_prefix+'/gogetthecart/:data').to('Main.gogetthecart');

在客户端,javascript,我生成了一个base64json 数据var jsonb64 = btoa(JSON.stringify(params));,然后我调用了这样的 url

http://www.mydomain.com//gogetthecart/GVudGl...aWNo=

我得到错误:404 Not Found= ..但是如果我从有效数据的末尾手动删除

4

1 回答 1

0

正如 Kieran 所说,由社区在 git repos 问题https://github.com/geddy/geddy/issues/556中解决

我考虑直接向 Barista 添加对 base64 编码变量的支持,但 b64 规范中的一些字符在 URI 规范中保留。我觉得将其作为默认行为感到不舒服。

然而!您可以简单地覆盖该行为以支持此用例:

router
.get( routing_prefix+'/gogetthecart/:data')
.to('Main.gogetthecart')
.where({
  data: /[\w\-\/+]+={0,2}/ // base64-safe regex condition
})

这应该可以解决问题!

我在这里添加了一个测试: https ://github.com/kieran/barista/blob/master/tests/barista.test.js#L812

于 2014-03-06T09:17:47.390 回答