ERROR URI :: InvalidURIError:由于浏览器,错误的URI(不是URI?)

时间:2012-05-28 16:01:21

标签: ruby http browser sinatra uri

我的一些网址上有一些特殊字符。例如:

http://blabla.com/title/?t=burası

当我从其他页面提供指向该页面的链接时,我使用:

URI.encode(s)

生成此链接:

/title/?t=buras%C4%B1

虽然到目前为止一切正常,但我在页面上还有另一个带有编码网址的表单。但是当用户访问/title/?t=buras%C4%B1并将网址转换为/title/?t=burası时,浏览器会倾向于解码我的编码网址。问题从这里开始,因为当用户尝试从'burası'页面上的表单发送内容时,sinatra会出错:

ERROR URI::InvalidURIError: bad URI(is not URI?): http://localhost:3000/title/?t=burası

我认为这是因为HTTP请求的'referrer'字符串,但我找不到任何解决方法,只要浏览器倾向于自动解码字符串。

1 个答案:

答案 0 :(得分:3)

您应该在FORM方法中对URI进行编码。

例如,让您的HTML FORM操作看起来像这样:

<form action="/title/?t=buras%C4%B1" method="post">

这能为你解决吗?

(编辑:感谢x1a4进行更正 - 当然你是对的!)