Передача параметров в Response.Redirect без QueryStrings - PullRequest
0 голосов
/ 16 октября 2018

Мне просто интересно, возможно ли это вообще.Итак, мы находимся в процессе перевода нашего сайта с Classic ASP на ASP.NET MVC.Тем не менее, мы делаем это немного в настоящее время.Мы разбили его на три новых проекта ASP.NET MVC, каждый из которых будет иметь свой собственный домен.Проблема, с которой я сталкиваюсь, заключается в том, что мы хотим войти в систему на одной странице (которая в настоящее время является классическим ASP), а затем перенаправить их в новый домен, передавая такие вещи, как SessionID.

Я добился приличной работы, сохраняя информацию в БД, когда они входят в систему, а затем отправляя ее через QueryStrings.Проблема в том, что менеджер хочет, чтобы я не использовал QueryStrings из-за возможной информации (например, UserId), отправляемой туда.Поэтому он предлагает отправить его через заголовки.Это работает с использованием запроса GET и добавлением информации в заголовок.Я не могу перенаправить через GET, насколько я знаю.Я не думаю, что перенаправление через POST также будет работать.

Есть ли способ перенаправления из одного домена в другой при передаче информации, которая не требует QueryStrings?Если вам нужна дополнительная информация, дайте мне знать.

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Есть несколько вариантов 1) Если вы не можете использовать строки запросов, вы можете записать значения в форму и POST (а не GET).Поместите на него javascript для автопоста.Таким образом, пользователь входит в классический ASP, записывает значения в форму на следующей странице и затем автоматически отправляет эту форму.Это по-прежнему не является сверхбезопасным, так как поля формы могут быть прочитаны. 2) Для большей безопасности вы можете хешировать или шифровать значения в форме, если вы идете по этому маршруту, вы можете зашифровать все поля и затем передать их через запрос.string

Ранее у нас была такая ситуация, когда основной системой был классический ASP, а новой частью системы был MVC ASP.NET.Мы использовали компонент шифрования на стороне ASP (ASPEncrypt) и встроили расшифровку в ASP.NET, чтобы пользователи могли безопасно передавать данные между системами, сохраняя при этом, кто вошел в систему.

0 голосов
/ 17 октября 2018

Вы не можете напрямую указать браузеру пользователя отправку заголовка при получении второго веб-сайта.По сути, вы просто даете ему адрес, и он сам выбирает страницу.Что может быть возможно, если оба сайта имеют одинаковый домен верхнего уровня (т. Е. website1.example.com & website2.example.com), что весьма вероятно, так как вы можете просто использовать cookie-файл, хранящийся в базовом домене (*.example.com).Таким образом, поток будет -

  1. Пользователь входит в систему, вы возвращаете ответ с заголовком Set-Cookie и заголовком Location (это перенаправление).
  2. Браузер пользователясохраняет значения, которые вы попросили сохранить в своем хранилище cookie.
  3. Браузер пользователя отправляет запрос на сайт, на который вы перенаправлены.Поскольку вы устанавливаете cookie на уровне базового домена, он будет отправлен на любой *.example.com, в основном это означает, что второй сайт получит заголовок (Cookie) с информацией с первого сайта.
  4. Inвторой сайт, прочитайте файл cookie и выполните любую необходимую логику.

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

Релевантно -

Обмен cookie-файлами между поддоменом и доменом

Обзор файлов cookie ASP.NET

...