【问题标题】:There is a post limit in Internet Explorer of 3926 characters. How can I bypass this?Internet Explorer 中的帖子限制为 3926 个字符。我怎样才能绕过这个?
【发布时间】:2011-02-10 02:01:54
【问题描述】:

我已经解决这个错误 12 个小时了,我想我已经把这个问题缩小了。

如果我提供一个 post 方法,无论它是一个 json 对象还是一个字符串,IE 将允许最多约 3926 个字符。没有别的,不管它的形状或大小。只要它像这样被传递:

<form method="post" action="/generate_csv.csv?calc[][amount_paid]=0.0&amp;calc[][date_awarded]=02%2F02%2F1981&amp;calc[][date_paid]=12%2F31%2F1981&amp;calc[][interest_rate]=12.0&amp;calc[][principal]=1955.96&amp;calc[][tf]=0.912328767123288&amp;calc[][total_interest]=214.14&amp;calc[][amount_paid]=0.0&amp;calc[][date_awarded]=1%2F1%2F1982&amp;calc[][date_paid]=12%2F31%2F1982&amp;calc[][interest_rate]=12.0&amp;calc[][principal]=1955.96&amp;calc[][tf]=1.0&amp;calc[][total_interest]=234.72&amp;calc[][amount_paid]=0.0&amp;calc[][date_awarded]=1%2F1%2F1983&amp;calc[][date_paid]=12%2F31%2F1983&amp;calc[][interest_rate]=12.0&amp;calc[][principal]=1955.96&amp;calc[][tf]=1.0&amp;calc[][total_interest]=234.72&amp;calc[][amount_paid]=0.0&amp;calc[][date_awarded]=1%2F1%2F1984&amp;calc[][date_paid]=12%2F31%2F1984&amp;calc[][interest_rate]=12.0&amp;calc[][principal]=1955.96&amp;calc[][tf]=1.0027397260274&amp;calc[][total_interest]=235.36&amp;calc[][amount_paid]=0.0&amp;calc[][date_awarded]=1%2F1%2F1985&amp;calc[][date_paid]=12%2F31%2F1985&amp;calc[][interest_rate]=12.0&amp;calc[][principal]=1955.96&amp;calc[][tf]=1.0&amp;calc[][total_interest]=234.72&amp;calc[][amount_paid]=0.0&amp;calc[][date_awarded]=1%2F1%2F1986&amp;calc[][date_paid]=12%2F31%2F1986&amp;calc[][interest_rate]=9.5&amp;calc[][principal]=1955.96&amp;calc[][tf]=1.0&amp;calc[][total_interest]=185.82&amp;calc[][amount_paid]=0.0&amp;calc[][date_awarded]=1%2F1%2F1987&amp;calc[][date_paid]=12%2F31%2F1987&amp;calc[][interest_rate]=7.5&amp;calc[][principal]=1955.96&amp;calc[][tf]=1.0&amp;calc[][total_interest]=146.7&amp;calc[][amount_paid]=0.0&amp;calc[][date_awarded]=1%2F1%2F1988&amp;calc[][date_paid]=12%2F31%2F1988&amp;calc[][interest_rate]=6.0&amp;calc[][principal]=1955.96&amp;calc[][tf]=1.0027397260274&amp;calc[][total_interest]=117.68&amp;calc[][amount_paid]=0.0&amp;calc[][date_awarded]=1%2F1%2F1989&amp;calc[][date_paid]=12%2F31%2F1989&amp;calc[][interest_rate]=7.0&amp;calc[][principal]=1955.96&amp;calc[][tf]=1.0&amp;calc[][total_interest]=136.92&amp;calc[][amount_paid]=0.0&amp;calc[][date_awarded]=1%2F1%2F1990&amp;calc[][date_paid]=12%2F31%2F1990&amp;calc[][interest_rate]=8.0&amp;calc[][principal]=1955.96&amp;calc[][tf]=1.0&amp;calc[][total_interest]=156.48&amp;calc[][amount_paid]=0.0&amp;calc[][date_awarded]=1%2F1%2F1991&amp;calc[][date_paid]=12%2F31%2F1991&amp;calc[][interest_rate]=8.5&amp;calc[][principal]=1955.96&amp;calc[][tf]=1.0&amp;calc[][total_interest]=166.26&amp;calc[][amount_paid]=0.0&amp;calc[][date_awarded]=1%2F1%2F1992&amp;calc[][date_paid]=12%2F31%2F1992&amp;calc[][interest_rate]=7.5&amp;calc[][principal]=1955.96&amp;calc[][tf]=1.0027397260274&amp;calc[][total_interest]=147.1&amp;calc[][amount_paid]=0.0&amp;calc[][date_awarded]=1%2F1%2F1993&amp;calc[][date_paid]=12%2F31%2F1993&amp;calc[][interest_rate]=5.5&amp;calc[][principal]=1955.96&amp;calc[][tf]=1.0&amp;calc[][total_interest]=107.58&amp;calc[][amount_paid]=0.0&amp;calc[][date_awarded]=1%2F1%2F1994&amp;calc[][date_paid]=12%2F31%2F1994&amp;calc[][interest_rate]=3.5&amp;calc[][principal]=1955.96&amp;calc[][tf]=1.0&amp;calc[][total_interest]=68.46&amp;calc[][amount_paid]=0.0&amp;calc[][date_awarded]=1%2F1%2F1995&amp;calc[][date_paid]=12%2F31%2F1995&amp;calc[][interest_rate]=3.5&amp;calc[][principal]=1955.96&amp;calc[][tf]=1.0&amp;calc[][total_interest]=68.46&amp;calc[][amount_paid]=0.0&amp;calc[][date_awarded]=1%2F1%2F1996&amp;calc[][date_paid]=12%2F31%2F1996&amp;calc[][interest_rate]=5.5&amp;calc[][principal]=1955.96&amp;calc[][tf]=1.0027397260274&amp;calc[][total_interest]=107.87&amp;calc[][amount_paid]=0.0&amp;calc[][date_awarded]=1%2F1%2F1997&amp;calc[][date_paid]=12%2F31%2F1997&amp;calc[][interest_rate]=5.5&amp;calc[][principal]=1955.96&amp;calc[][tf]=1.0&amp;calc[][total_interest]=107.58&amp;calc[][amount_paid]=0.0&amp;calc[][date_awarded]=1%2F1%2F1998&amp;calc[][date_paid]=12%2F31%2F1998&amp;calc[][interest_rate]=5.5&amp;calc[][principal]=1955.96&amp;calc[][tf]=1.0&amp;calc[][total_interest]=107.58&amp;calc[][amount_paid]=0.0&amp;calc[][date_awarded]=1%2F1%2F1999&amp;calc[][date_paid]=12%2F31%2F1999&amp;calc[][interest_rate]=5.5&amp;calc[][principal]=1955.96&amp;calc[][tf]=1.0&amp;calc[][total_interest]=107.58&amp;calc[][amount_paid]=0.0&amp;calc[][date_awarded]=1%2F1%2F2000&amp;calc[][date_paid]=12%2F31%2F2000&amp;calc[][interest_rate]=5.0&amp;calc[][principal]=1955.96&amp;calc[][tf]=1.0027397260274&amp;calc[][total_interest]=98.07&amp;calc[][amount_paid]=0.0&amp;calc[][date_awarded]=1%2F1%2F2001&amp;calc[][date_paid]=12%2F31%2F2001&amp;calc[][interest_rate]=5.5&amp;calc[][principal]=1955.96&amp;calc[][tf]=1.0&amp;calc[][total_interest]=107.58&amp;calc[][amount_paid]=0.0&amp;calc[][date_awarded]=1%2F1%2F2002&amp;calc[][date_paid]=12%2F31%2F2002&amp;calc[][interest_rate]=6.0&amp;calc[][principal]=1955.96&amp;calc[][tf]=1.0&amp;calc[][total_interest]=117.36&amp;calc[][amount_paid]=0.0&amp;calc[][date_awarded]=1%2F1%2F2003&amp;calc[][date_paid]=12%2F31%2F2003&amp;calc[][interest_rate]=3.0&amp;calc[][principal]=1955.96&amp;calc[][tf]=1.0&amp;calc[][total_interest]=58.68&amp;calc[][amount_paid]=0.0&amp;calc[][date_awarded]=1%2F1%2F2004&amp;calc[][date_paid]=12%2F31%2F2004&amp;calc[][interest_rate]=2.0&amp;calc[][principal]=1955.96&amp;calc[][tf]=1.0027397260274&amp;calc[][total_interest]=39.23&amp;calc[][amount_paid]=0.0&amp;calc[][date_awarded]=1%2F1%2F2005&amp;calc[][date_paid]=12%2F31%2F2005&amp;calc[][interest_rate]=1.0&amp;calc[][principal]=1955.96&amp;calc[][tf]=1.0&amp;calc[][total_interest]=19.56&amp;calc[][amount_paid]=0.0&amp;calc[][date_awarded]=1%2F1%2F2006&amp;calc[][date_paid]=12%2F31%2F2006&amp;calc[][interest_rate]=2.0&amp;calc[][principal]=1955.96&amp;calc[][tf]=1.0&amp;calc[][total_interest]=39.12&amp;calc[][amount_paid]=0.0&amp;calc[][date_awarded]=1%2F1%2F2007&amp;calc[][date_paid]=12%2F31%2F2007&amp;calc[][interest_rate]=4.0&amp;calc[][principal]=1955.96&amp;calc[][tf]=1.0&amp;calc[][total_interest]=78.24&amp;calc[][amount_paid]=0.0&amp;calc[][date_awarded]=1%2F1%2F2008&amp;calc[][date_paid]=12%2F31%2F2008&amp;calc[][interest_rate]=5.5&amp;calc[][principal]=1955.96&amp;calc[][tf]=1.0027397260274&amp;calc[][total_interest]=107.87&amp;calc[][amount_paid]=0.0&amp;calc[][date_awarded]=1%2F1%2F2009&amp;calc[][date_paid]=12%2F31%2F2009&amp;calc[][interest_rate]=4.0&amp;calc[][principal]=1955.96&amp;calc[][tf]=1.0&amp;calc[][total_interest]=78.24&amp;calc[][amount_paid]=0.0&amp;calc[][date_awarded]=1%2F1%2F2010&amp;calc[][date_paid]=12%2F31%2F2010&amp;calc[][interest_rate]=1.5&amp;calc[][principal]=1955.96&amp;calc[][tf]=1.0&amp;calc[][total_interest]=29.34&amp;calc[][amount_paid]=0.0&amp;calc[][date_awarded]=1%2F1%2F2011&amp;calc[][date_paid]=02%2F09%2F2011&amp;calc[][interest_rate]=0.5&amp;calc[][principal]=1955.96&amp;calc[][tf]=0.10958904109589&amp;calc[][total_interest]=1.07" accept-charset="UTF-8"><div style="margin: 0pt; padding: 0pt; display: inline;"><input type="hidden" value="✓" name="utf8"><input type="hidden" value="dbxrVZT2J42AB0QdMFi2XPggVGAQKtm8IkcuIj+U2jU=" name="authenticity_token"></div>

在所有其他浏览器中,这完全没问题通过。但 IE 不会容忍这一点过去。

任何人知道我怎样才能以一种小而精炼的方式,甚至是另一种方式传递相同数量的数据吗?

我在想,另一种方法是传递对象的别名,以便对象本身在控制器之间传递,但通过视图。这是在没有将对象保存到数据库的情况下完成的。只是在这里大声思考。

接受任何想法。 :D

我的哈姆:

= form_tag generate_csv_path(:calc => @calc.results, :total_interest => @calc.total_interest, :per_diem => @calc.per_diem, :docket_num => @calc.docket_num, :our_file_num => @calc.our_file_num) do
  = submit_tag 'Print CSV', :id => "print_csv"

更新

所以我遍历所有项目,试图将它们分解成更小的隐藏字段,它们都以散列形式出现

- @calc.results.each do |k, v|
  = hidden_field :calc_result, "#{k[:total_interest]}"

生产:

"117.68"=>"",
"166.26"=>"",
"147.1"=>"",
"107.58"=>"",
"58.68"=>"",

太不可思议了。我想我最终可能能够创建一个值作为哈希值。这样 1 calc_result 就可以包含 5 个不同的属性。

【问题讨论】:

  • 您为什么要发布到 URL?这些不应该是隐藏的表单字段吗?
  • 我认为 IE 限制 URL 长度而不是帖子长度。
  • @Daniel - 我不在舒适区,因为我没有使用数据库来执行此操作。您将如何使用 hidden_​​fields 发布此表单?我会在上面更新我的 haml 所说的内容。

标签: ruby-on-rails internet-explorer forms post


【解决方案1】:

将数据发布为

正文,而不是 URL 的一部分。

网址有长度限制。作为表单正文发布的数据没有限制,因为它们是标题的一部分(不是 URL)

http://support.microsoft.com/kb/208427

更新(回应您的评论) 数据作为表单主体的一部分...

<form method="post" action="/generate_csv.csv">
 <input type="hidden" name="calc[][amount_paid]" value="0.0"/>
 ... //other fields here
</form>

【讨论】:

  • 看上面的例子..那不是Form Body的一部分吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-19
  • 1970-01-01
  • 2015-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多