为什么我的 rails 会自动解码 URL?我怎样才能阻止它?
Why does my rails automatically decode URL? How can I stop it?
我试图像这样获取 URL:
http://myweb/api/1/1/NJUimQw0bsJgv%2FqjfpMzCl5CeeL%2BnCQr61UVLBcJCNA%3D%0A
但是,日志文件显示:
ActionController::RoutingError (No route matches [GET] "/api/1/1/NJUimQw0bsJgv/qjfpMzCl5CeeL+nCQr61UVLBcJCNA=%0A"):
似乎 rails 自动解码 URI。我怎样才能禁用它?
在我的 route.rb:
scope '/api' do
get '/:aid/:uid/:token' => 'my_apis#show'
end
我的网站是 rails 4.2.1 并且正在使用 nginx。
您的令牌包含导致问题的正斜杠('/'),修改路由将解决问题
scope '/api' do
get '/:aid/:uid/:token' => 'my_apis#show', constraints: { token: /.*/ }
end
segment-constraints 使用正则表达式限制动态段的格式,在您的情况下,动态段是 token
。正则表达式 /.*/
匹配每个字符(包括正斜杠 /
)
总的来说,它告诉 rails uuid
之后的每个字符都是 token
。所以 rails 在令牌中也包含 /
我试图像这样获取 URL:
http://myweb/api/1/1/NJUimQw0bsJgv%2FqjfpMzCl5CeeL%2BnCQr61UVLBcJCNA%3D%0A
但是,日志文件显示:
ActionController::RoutingError (No route matches [GET] "/api/1/1/NJUimQw0bsJgv/qjfpMzCl5CeeL+nCQr61UVLBcJCNA=%0A"):
似乎 rails 自动解码 URI。我怎样才能禁用它?
在我的 route.rb:
scope '/api' do
get '/:aid/:uid/:token' => 'my_apis#show'
end
我的网站是 rails 4.2.1 并且正在使用 nginx。
您的令牌包含导致问题的正斜杠('/'),修改路由将解决问题
scope '/api' do
get '/:aid/:uid/:token' => 'my_apis#show', constraints: { token: /.*/ }
end
segment-constraints 使用正则表达式限制动态段的格式,在您的情况下,动态段是 token
。正则表达式 /.*/
匹配每个字符(包括正斜杠 /
)
总的来说,它告诉 rails uuid
之后的每个字符都是 token
。所以 rails 在令牌中也包含 /