通过查询字符串Asp .Net发送多个参数的最佳方式

时间:2010-03-05 14:23:16

标签: asp.net query-string

这是将多个参数发送到网页(在不同服务器上)的最佳方式(在性能和安全性方面),考虑到参数的长度可能会有所不同,因为我正在发送产品列表,以及客户可能选择了多个产品,因此我们需要将查询字符串上的每个产品发送到另一个页面。

例如(我在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>

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

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

提前致谢。

4 个答案:

答案 0 :(得分:2)

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

考虑到所有事情,这里有一些一般性观点:

  1. 查询字符串的长度有各种限制(IE将它们限制为大约2083个字符,某些服务器或代理可能忽略超过1024个字符的部分等),而POST请求可能要大得多。
  2. 如果您正在使用此客户端,则用户可以看到查询字符串参数(具有可以为其标记的好处),而他们无法(轻松)查看POST请求。
  3. 为了更高的安全性,如果第三方服务器支持,请通过SSL提交请求。
  4. 如果首先UrlEncode,可以通过查询字符串轻松发送特殊字符。
  5. 至于性能,它取决于创建查询字符串而不是创建XML或JSON字符串所需的处理量。

答案 1 :(得分:0)

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

HTH。

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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