通过POST请求请求URI太长

时间:2017-03-10 14:02:34

标签: ruby-on-rails ruby

我正在通过Net发送POST请求:

  http    = Net::HTTP.new(mixpanel_endpoint.host, mixpanel_endpoint.port)
  request = Net::HTTP::Post.new(mixpanel_endpoint.request_uri)
  http.request(request)

问题是request_uri超过了最大限制。它是一个BASE64编码的字符串。

有人知道该怎么做吗?

<Net::HTTPRequestURITooLong 414 Request URI Too Long readbody=true>

2 个答案:

答案 0 :(得分:1)

Net::HTTPRequestURITooLong是来自服务器的414 HTTP代码,您需要更改请求以符合端点允许的内容。

  

10.4.15 414 Request-URI太长

     

服务器拒绝为请求提供服务,因为Request-URI   比服务器愿意解释的更长。这种罕见的情况   仅在客户端未正确转换POST时才会发生   当客户端请求具有长查询信息的GET请求   已经陷入了一个URI&#34;黑洞&#34;重定向(例如,a   重定向的URI前缀,指向其自身的后缀),或者当   服务器受到试图利用安全性的客户端的攻击   某些服务器中存在使用固定长度缓冲区进行读取的孔   或操纵Request-URI。

参考:https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

答案 1 :(得分:0)

您是否将数据直接添加到网址?

尝试从数据中分割出端点URL。例如:

Net::HTTP::Post.new(request_endpoint, "whatever_param_value=#{base64_encoded_data}")