Лучший способ отправить несколько параметров через строку запроса Asp .Net - PullRequest
1 голос
/ 05 марта 2010

Это лучший способ (с точки зрения производительности и безопасности) отправить несколько параметров на веб-страницу (на другой сервер), учитывая, что длина параметров может варьироваться, поскольку я отправляю список продуктов Возможно, клиент выбрал более одного продукта, поэтому нам нужно отправить каждый продукт в строке запроса на другую страницу.

Например (я на 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 ]

2 голосов
/ 05 марта 2010

Исходя из вашего комментария, вы ограничены тем, что будет принимать сторонний сайт - если все, что он будет обрабатывать, это строки запроса, то вам придется его отправлять. Если он будет обрабатывать посты формы, то вы можете посмотреть на отправку информации в заголовках поста, но это потребует дополнительной работы (вы также не указали, создаете ли WebRequest на стороне сервера). или сделать это через JavaScript на стороне клиента).

Учитывая все обстоятельства, вот некоторые общие моменты:

  1. Существуют различные ограничения на длину строки запроса (IE ограничивает их до 2083 символов, некоторые серверы или прокси-серверы могут игнорировать части более 1024 символов и т. Д.), Тогда как запросы POST могут быть намного больше.
  2. Если вы выполняете эту клиентскую часть, пользователь может видеть параметры строки запроса (что дает им преимущество в том, что он может их пометить), в то время как он не может (легко) видеть запросы POST.
  3. Для большей безопасности, если сторонний сервер поддерживает его, отправьте запрос по SSL.
  4. Специальные символы могут быть легко отправлены через строку запроса, если вы UrlEncode сначала их.

Что касается производительности, то это зависит от объема обработки, который вам необходимо выполнить для создания строк запроса, а не для создания строк XML или JSON.

0 голосов
/ 13 июля 2010

Давай, какой вопрос задают? что лучше. здесь нет ни одного правильного ответа. все говорят об ограничениях. но не о способах ее решения. скажем, я хочу передать 100 параметров, генерирует динамически, все имеют огромную длину, могу ли я использовать здесь POST () тогда? Я так не думаю, просто подумайте, какое же должно быть лекарство? Может быть передать объект коллекции в качестве параметра.

0 голосов
/ 05 марта 2010

Вы должны иметь в виду, что существует ограничение на длину строки запроса, в зависимости от того, какой браузер используют ваши пользователи.Например, IE6 имеет ограничение в 2053 символа.Я бы посоветовал вам придумать метод, позволяющий сделать строку запроса максимально короткой, чтобы не превышать этот предел.

Что касается безопасности, то на самом деле нет никакой защиты, если вы передаете информацию в строке запроса.Любой может изменить эту информацию и затем отправить ее.Если безопасность является серьезной проблемой, вам следует изучить возможность шифрования информации, прежде чем добавлять ее в строку запроса, или найти другой способ ее полной отправки.

0 голосов
/ 05 марта 2010

Я бы использовал простой подход строки запроса, который вы могли бы написать утилиту для преобразования коллекции request.querystring в формат, который лучше работает для вас (XML, JSON, Dictionary и т. Д.), IMHO.

НТН.

...