Request URI too long via POST request

I'm sending a POST request via Net as such:

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

The issue is that the request_uri is over the max limit. It's a BASE64 encoded string.

Does anybody know what to do about this?

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

Upvotes: 1

Views: 1983

Answers (2)

Kris
Kris

Reputation: 19948

Net::HTTPRequestURITooLong is a 414 HTTP code from the server, you will need to change the request to conform to what the endpoint allows.

10.4.15 414 Request-URI Too Long

The server is refusing to service the request because the Request-URI is longer than the server is willing to interpret. This rare condition is only likely to occur when a client has improperly converted a POST request to a GET request with long query information, when the client has descended into a URI "black hole" of redirection (e.g., a redirected URI prefix that points to a suffix of itself), or when the server is under attack by a client attempting to exploit security holes present in some servers using fixed-length buffers for reading or manipulating the Request-URI.

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

Upvotes: 1

gwcodes
gwcodes

Reputation: 5690

Are you adding the data directly to the URL?

Try splitting out the endpoint URL from the data. For example:

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

Upvotes: 0

Related Questions