【问题标题】:Best way of send multiple parameters via querystring Asp .Net通过查询字符串 Asp .Net 发送多个参数的最佳方式
【发布时间】:2010-03-05 14:23:16
【问题描述】:

考虑到参数的长度可能会有所不同,因为我要发送产品列表,并且客户可能选择了多个产品,因此我们需要将查询字符串中的每个产品发送到另一个页面。

例如(我在 C# 上);我想这样调用一个网页:

  • 简单查询字符串: thepage.asp?Product=1&Name=Coffee&Value=1.99
  • Json: thepage.asp?{"Product":"1","Name":"Coffee","Value":"1.99"}
  • XML: thepage.aps?<xml><Products><product>1</product><name>Coffee</name><Value>1.99</Value></Products>

(显然考虑到我们不能通过查询字符串发送特殊字符,但我将它们放在这里以便更好地理解)

哪种方式更好(性能、安全性)?

提前致谢。

【问题讨论】:

  • 你控制这两个网站吗?还是您将这些值发送到第三方网站而您无权访问代码库?
  • 我正在将值发送到第三方站点;我无法控制该代码。

标签: asp.net query-string


【解决方案1】:

根据您的评论,您仅限于第三方网站将接受的内容 - 如果它只处理查询字符串,那么您将不得不以这种方式发送它。如果它将处理表单帖子,那么您可以查看在帖子的标题中提交信息,但这需要更多的工作(您还没有指定是否在服务器端构建WebRequest ,或通过客户端的 JavaScript 执行此操作)。

综合考虑,以下是一些一般要点:

  1. 对查询字符串的长度有各种限制(IE 将它们限制为大约 2083 个字符,某些服务器或代理可能会忽略超过 1024 个字符的部分等),而 POST 请求可能会更大。
  2. 如果您在客户端执行此操作,用户可以看到查询字符串参数(这样做的好处是他们可以为它们添加书签),而他们不能(轻松)看到 POST 请求。
  3. 为提高安全性,如果第三方服务器支持,请通过 SSL 提交请求。
  4. 如果您先UrlEncode,则可以通过查询字符串轻松发送特殊字符。

至于性能,它取决于创建查询字符串而不是创建 XML 或 JSON 字符串所需的处理量。

【讨论】:

    【解决方案2】:

    我会使用简单的查询字符串方法,您可以编写一个实用程序将 request.querystring 集合转换为更适合您的格式(XML、JSON、字典等),恕我直言。

    HTH。

    【讨论】:

      【解决方案3】:

      您需要记住,查询字符串的长度是有限制的,具体取决于您的用户使用的浏览器。例如,IE6 有 2053 个字符的限制。我建议您想出一种方法来使查询字符串尽可能短以避免达到此限制。

      就安全性而言,如果您在查询字符串中传递信息,则确实没有任何安全性。任何人都可以修改该信息然后发送。如果安全是一个主要问题,您应该在将信息添加到查询字符串之前考虑对其进行加密,或者找到一种不同的方法来完全发送它。

      【讨论】:

        【解决方案4】:

        来吧,问的问题是什么?这是更好的方法。没有人在这里正确回答。所有人都在谈论限制。但不是关于解决它的补救措施。假设我想传递 100 个动态生成的参数,它们的长度都很大,那么我可以在这里使用 POST() 吗?我不这么认为,只是考虑一下,那应该采取什么补救措施呢?可以将集合对象作为参数传递。

        【讨论】:

          猜你喜欢
          • 2014-07-10
          • 2014-01-15
          • 1970-01-01
          • 1970-01-01
          • 2018-05-08
          • 2012-01-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多