4

一部の URL に特殊文字が含まれています。例えば:

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

他のページからそのページへのリンクを提供するときは、次を使用します。

URI.encode(s)

このリンクを生成します:

/title/?t=buras%C4%B1

この時点まではすべて正常ですが、ページにはエンコードされた URL を持つ別のフォームもあります。しかし、ブラウザは、ユーザーがアクセスして URL を に変換すると、エンコードされた URL をデコードする傾向があり/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」文字列が原因だと思いますが、ブラウザが文字列を自動的にデコードする傾向がある限り、回避策は見つかりませんでした。

4

1 に答える 1

3

FORM メソッドで URI をエンコードする必要があります。

たとえば、HTML FORM アクションを次のようにします。

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

それはあなたのためにそれを解決しますか?

(編集:修正してくれたx1a4に感謝します-もちろんあなたは正しいです!:)

于 2012-06-10T01:31:05.463 に答える