【问题标题】:Rails Request Uri Too LargeRails 请求 Uri 太大
【发布时间】:2015-03-26 01:42:26
【问题描述】:

我的应用中有一个方法可以接受包含数百个用户联系人电话号码的 CSV,这些电话号码的长度各不相同,但最长可达数千个字符。在尝试执行该方法时:

localhost:3000/getActivatedFriends/phoneNum1,phoneNum2,phoneNum3...phoneNum350...etc

出现以下错误:

Request-URI Too Large

WEBrick::HTTPStatus::RequestURITooLarge

在我的个人设备上,CSV 中的字符数是 2868。我怎样才能绕过这个限制,或者在 localhost 和 Heroku 中设置为无限长度?

请求控制器动作: (请忽略可能的 SQL 注入,因为这只是在开发中)

def getActivatedFriends
        @results = User.find_by_sql("SELECT 
                                                a.id
                                             ,  a.username
                                             ,  a.phoneNumber
                                             FROM users a
                                             WHERE phoneNumber in (" + params[:friends_phone_number_csv].to_s + ") and
                                                   removed = 0 and
                                                   is_user = 1;")

        respond_to do |format|
            format.html
            format.json { render json: { friends_match: @results }}
        end         
    end

铁路路线:

get '/getActivatedFriends/:friends_phone_number_csv',
  to: 'requests#getActivatedFriends', via: 'post',
  constraints: { friends_phone_number_csv: /([0-9]+,?)+/ }

【问题讨论】:

    标签: ruby-on-rails csv heroku uri


    【解决方案1】:

    改用 POST 请求,应该可以解决问题。

    【讨论】:

    • 通过定义的路由可以看到:get '/getActivatedFriends/:friends_phone_number_csv', to: 'requests#getActivatedFriends', via: **'post'**, constraints: { friends_phone_number_csv: /([0-9]+,?)+/ } 我已经定义为post请求了……
    • 这不是转发到后控制器的获取请求吗?我认为您遇到的问题与获取请求的最大大小有关。大多数浏览器(和服务器)都有一个最大 url 长度,如果内存服务,这是 2048,由 IE 实现。
    • 我该如何实现这个?我可以捆绑...吗?
    • 你为什么不能这样做:post '/getActivatedFriends/:friends_phone_number_csv' ... 抱歉,我似乎在朝着这个方向努力,但在这种情况下你真的应该使用帖子而不是获取。
    • 问题是我需要它是一个get,因为我需要在查询执行后检索数据
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-31
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-14
    相关资源
    最近更新 更多