我将此请求发送到服务:
get_store_data = Typhoeus::Request.new("http://localhost:3000/api/v1/store?service=#{(proxy_ticket.service)}&ticket=#{proxy_ticket.ticket}")
proxy_ticket.service
解析为此字符串"http://localhost:3000/api/v1/store"
。发送请求时,此字符串将转义为:
service=http%3A%2F%2Flocalhost%3A3000%2Fapi%2Fv1%2Fstore
问题是另一端的服务期望服务参数为"http://localhost:3000/api/v1/store"
如何防止此查询字符串被转义?
答案 0 :(得分:5)
另一方应该是没有使用参数。如果您仍然想知道如何操作,here is the method uri.unescape
就像这样使用:
require 'uri'
enc_uri = URI.escape("http://example.com/?a=\11\15")
p enc_uri
# => "http://example.com/?a=%09%0D"
p URI.unescape(enc_uri)
# => "http://example.com/?a=\t\r"
如果你想快速浏览一个uri(并且不想出于某种奇怪的原因而打开一个代表,比如可能会侮辱你的荣誉或其他什么。)你可以尝试this site < / p>
答案 1 :(得分:1)
你做不到。它应该解码这个参数的“另一面”(很可能是这样)。
例如,rails会自动执行此编码。您可以通过将某些操作更改为raise params.pretty_inspect
来检查它,并使用额外的参数your/action/route?service=http%3A%2F%2Flocalhost%3A3000%2Fapi%2Fv1%2Fstore
调用它。你会看到params包括service: http://localhost:3000/api/v1/store
。
如果这对你不起作用,你需要与另一方取得联系,以便他们实现这一点。没有其他方法可以在获取网址中传递网址。