我只是为Rails App开发WebDAV界面。因此,我将所有webdav.example.com/path/to/folder路径路由到webdav控制器:
scope controller: 'webdav', constraints: {subdomain: 'webdav'} do
get '*path', action: 'show'
# some more webdav specific routes...
end
一切正常,但是对于名为“Verträge”的文件夹,本机Windows客户端现在请求webdav.example.com/Vertr%E4ge,不幸的是它破坏了rails路由进程,引发了一个ActionController :: BadRequest ......
经过一些研究后,我发现即像高压这样的宝石也存在同样的问题。有人有想法解决这个问题吗?无论是告诉Windows发送真正的'ä'还是在轨道端修复它......
更新:
%E4属于ISO-8859-1(ISO Latin 1)字符编码,但Rails路由适用于UTF-8。
所以GET webdav.example.com/Vertr%C3%A4ge的效果非常好。
在发送请求之前,如何让Windows到UTF8编码网址或Rails以正确识别和转换网址?
答案 0 :(得分:1)
目前最终以这种方式修补ActionDispatch :: Routing :: RouteSet :: Dispatcher:https://gist.github.com/sdhull/9240273
欢迎其他解决方案/讨论:)