http路径后面带参数,参数过长报500错误,比如:我运行一个项目,在页面上路径显示www.baidu.com(这只是打个比方),然后再一个文本框内输入一个长度超过2000左右的字符串,点击确认按钮,这时需要把文本框里的内容带到别的地方去,所以页面上显示路径应该是www.baidu.com?text=aaaaa....aaaa(此处为长度超过2000左右的字符串),这时候页面就会报500错误,什么原因?
不好意思,没分了,帮个忙!
要带到别的地方可以用别的方法,比如你把文本框的内容存在数据库,带过去id,然后别的页面再去读取
路径最长不要超过1000字符
时什么原因你知道吗?
@Andylls: 我查了下url协议没有明确规定长度限制,如果服务器不能处理这么长的url请求,应该会返回414错误,你这个是500错误,所以可能跟你服务器设置有关系。我可以问一下为什么要把文本框内容带到url请求上吗?
@飞来飞去: 应该是404错误吧,我估计是这个错误,因为项目对错误页面做过处理,不是中文的,所以我当时也不知道具体是404还是500。
这个功能是这样的,是一个查询功能,那个检索条件的文本框字符长度不能超过255,超过255就不查询,还是现实所有数据,但是客户的要求是点了查询之后,然后选中一条数据编辑,在编辑页面有个返回按钮,点击返回,要把之前检索的条件保留,但是又不能用historyback这种返回方式,所以是form标签提交的方式。所以我才把输入的查询条件放到路径里面带到编辑页面,返回的时候再把条件返回回来,就是这样了。
额,太长了,能看懂么?
@Andylls: 编辑页面点击返回,带查询条件也才255字符啊,难道你还要带着编辑的内容返回?点击返回操作是什么?
@飞来飞去: 我只把查询条件返回回来,就是那文本框里面的内容,返回操作时用form表单返回的;主要是点击编辑,把条件传到编辑页面就已经出错了,所以也不知道返回回去是什么情况。
@Andylls: 晕倒,你在这步报错,怎么确定是url过长引起的。。。
@飞来飞去: 我试过,在条件内容不超过2000左右的时候可以过去,也没有报错,但是一旦超过2000左右就报错
@Andylls: 检索条件的文本框不是不能超过255吗?
@飞来飞去: 是不能超过255,但是那也只是在上面给个错误消息,而已,里面的内容还是不会变的,当提示错误的时候它就不会执行按条件查询,而是显示所有数据,这个时候,当别人点击编辑,再返回的时候一样要把它错误的条件保存在文本框里。所以说那客户很纠结。
@Andylls: 那可以这样,客户每次查询,都把查询条件作为纯文本记录在数据库a表(id+文本+token...),进入编辑页面的时候带上id、token、错误id,这样返回的时候再把参数返回,在根据id、token取出文本放出查询框,根据错误id显示错误内容。
再或者你把编辑页面作为页面的弹出框,而不是整个页面跳转。可以用jquery ui dialog来实现。
最多是4kb的get方式
这么长的参数还是通过别的方式传递吧
但是进入到编辑页面的时候不是用form标签提交,我只想到用那种方式传递了,还有什么传递方式么?
@Andylls: 这么大的数据量传递,还不如先存到一个地方,然后取出来了
比如cache什么地方的
@Andylls: 用 AJAX 的 POST 方式提交。为什么不用form标签提交。