0

サードパーティの Web サイトにリダイレクトする必要があります。問題は、redirect_to url を使用して、一部の URL がリダイレクトに機能し、一部の URL が機能しないことです。

例 1: http://example.com/click?a(9999999)p(9999999)prod(999999)ttid(999)url(http%3A%2F%2Fwww.someothersite.se%2Fd%2FBLah-Fooo%2FBar %2F_%2FA-3z324qaF1z140nu%3FNr%3D234234234 )

この URL を使用して、次のことを行います。redirect_to url

例 2: http://click.example.com/c/9999/m/9999/t/a/9999/?url=http://www.someothersite.se/sv/foo/bar/baz-99/ foo-bar-baz-9999?tm=999999

使用時:redirect_to urlERROR URI::InvalidURIError: bad URI(is not URI?)

だから、私はやろうとしました: redirect_to URI.encode(url) ...そしてそれはうまくいきます!しかし、例 1 の URL は機能しなくなります。サイトが見つからないと言う。ただし、Rails ではエラーは発生しません。

したがって、両方 (すべて?) の URI で機能するアプローチが必要です。何か案は?

Ruby 1.9.3 と Rails 3.2.5 を使用する

4

1 に答える 1

1

このように解決しました:

uri = URI.parse(the_url)
redirect_to uri.to_s
rescue URI::InvalidURIError => encoding
  redirect_to URI.encode(the_url)

これまでのところ私のアプリで動作します。

于 2012-07-29T18:05:08.513 に答える