2010-08-23 3 views
1

a) На основании какой информации web application определяет, является ли конкретный запрос GET? Просто проверяя, содержит ли запрошенный URL-адрес query string parameters?Некоторая путаница с запросами GET/POST

б) Когда страница http://some_domain/A.aspx сначала просила (или нажав ссылку элемент <a..> или вручную путем ввода URL в адресную строку), я предполагаю, что это не является ни POST или GET запросом?

с) Если пользователь вручную вводит в Address toolbar URL http://some_domain/A.aspx?ID=100, будет web application рассматривать запрос как GET запроса, даже если query string values не были извлечены (в браузере) из FORM elements?

d) Предполагая, что мы запрашиваем http://some_domain/A.aspx?ID=100, будет ли на обратной стороне запроса браузера url http://some_domain/A.aspx?ID=100 или просто http://some_domain/A.aspx?

е) Предполагая, что страница http://some_domain/A.aspx?ID=100 имеет FORM’s method attribute набор для POST, но его URL также содержит некоторые query string variables, то есть на постбэка запрос считающееся GET или POST?

Спасибо

ответ

4
  • а) Это GET, если браузер послал глагола GET в запросе HTTP. Аналогично для POST.
  • b) Обе описанные ситуации приведут к запросу GET.
  • c) GET и POST не зависят от строки запроса, то есть могут включать или не включать строковые переменные запроса.
  • d) Поскольку исходный запрос включал переменные запроса, postback снова включает эти переменные. URL с переменными - это «другой» URL-адрес, чем тот, который отсутствует.
  • e) Если метод формы POST, то это POST, независимо от того, что содержит URL. Строки запроса не связаны каким-либо образом с GET или POST.
+1

re: d) это не совсем правильно. Это зависит от того, имеет ли элемент FORM элемент ACTION. – x0n

+1

@ x0n: Да, вы технически верны, вы можете «переопределить» URL-адрес с помощью элемента действия. Однако это не случай по умолчанию, и пользователь должен был бы специально настроить это. – Mark

+0

«... вы можете« переопределить »URL-адрес с помощью элемента действия. Однако это не случай по умолчанию, и пользователь должен будет специально настроить это». Итак, если мы явно не указываем атрибут действия FORM, то по умолчанию этот атрибут установлен в URL-адрес исходного запроса? – flockofcode

1

а) он знает, от HTTP глагола, используемого в браузере

б) это GET

с) это еще GET

д) если <FORM> тег не имеет каких-либо действий атрибут, он будет содержать строку запроса. Если у него есть явный атрибут ACTION, он будет таким, каким будет этот URL.

e) это POST.

+0

«d), если тег

не имеет атрибута ACTION, он будет содержать строку запроса. Если у нее есть явный атрибут ACTION, это будет то, что этот URL-адрес». Другими словами, если мы явно не укажем атрибут действия FORM, то по умолчанию этот атрибут установлен в URL-адрес исходного запроса – flockofcode

+1

@flockofcode: правильный. – x0n

2

Информация о GET или POST извлекается из запроса - приложение не принимает решение о том, какой запрос он запрашивает, он считывает его из самого запроса. Например, первая строка запроса может выглядеть так:

GET http://www.mysite.com 

Браузер отправляет эту информацию в приложение. Ссылки всегда являются запросами GET. Ваше приложение может решить, как браузер будет реагировать на представления формы, установив атрибут метода формы o GEt или POST.

Предлагаю вам скачать Fiddler, чтобы вы могли видеть необработанные данные запроса для себя.

+0

+1 за предложение скрипача – NotMe

Смежные вопросы