#c# #asp.net-mvc-3 #http-redirect
#c# #asp.net-mvc-3 #http-перенаправление
Вопрос:
У меня возникла ситуация, когда мне нужно перенаправить пользователя со страницы на моем сервере на страницу на другом сервере. В этом перенаправлении мне нужно также отправить некоторый XML-файл на сервер, на который я перенаправляю. Этот XML-файл может быть довольно длинным, поэтому просто отправить его в строке запроса невозможно.
Я попытался прикрепить XML-файл в заголовке, но заголовок, похоже, не доходит до другого конца.
Я знаю, как программно создавать запросы на отправку xml и как перенаправлять, просто не уверен, как делать и то, и другое одновременно.
Короче говоря, мне нужен XML-файл для перехода к перенаправлению. Это перенаправление будет выполнено из действия MVC.
Заранее спасибо.
Редактировать
Я придумал следующее потенциальное решение моей проблемы. К сожалению, он использует два запроса, которых я надеялся избежать.
По сути, я отправляю XML-файл в качестве заголовка post-запроса, который также содержит идентификатор сеанса. Это отправляется асинхронно.
Затем я перенаправляю пользователя, передавая тот же идентификатор сеанса в строке запроса. Это действует как токен для связи одного запроса с другим. Мне просто нужно подождать и выяснить, готова ли другая сторона работать, используя два запроса.
Я также рассмотрел возможность использования дополнительной страницы, на которую я мог бы перенаправить пользователя, которая могла бы содержать Javascript, для выполнения дополнительной отправки формы на другой сервер с формой, которая содержала бы только одно поле, содержащее фрагмент xml, но это было исключено моим боссом как возможность (справедливо, поскольку этопохоже на небольшой взлом).
Существуют ли какие-либо очевидные или неочевидные недостатки моего предлагаемого метода, кроме очевидной возможности состояния гонки между 2 запросами?
Комментарии:
1. Я думаю , что все, что вам нужно сделать, это отправить им XML-файл и получить токен обратно. Затем вы перенаправляете пользователя на URL-адрес, содержащий этот токен. Теперь сторонний сайт знает, что нужно связать большой двоичный объект XML с этим пользователем. Вы видите подобную схему в некоторых системах обработки платежей.
2. Что будет использовать этот XML-файл, поскольку клиент все равно перейдет к перенаправленному ресурсу? Знание ответа на этот вопрос может помочь понять, как давать дальнейшие советы.
3. В качестве альтернативы вы можете перенаправить пользователя на сторонний сайт с помощью токена в URL. Вы знаете, что токен связан с определенным большим двоичным объектом. Сторонний сайт принимает токен и запрашивает у вас большой двоичный объект, который вы предоставляете. Теперь пользователь и большой двоичный объект XML находятся у третьей стороны. То же самое, но сторона, генерирующая токен, — это вы, а не они.
4. @jon Полезная нагрузка xml будет использоваться для создания содержимого на странице, на которую перенаправляется пользователь.
5. @inuyasha существует значительный объем обработки, который необходимо выполнить для xml-двоичного объекта. Если другой конец запрашивает его после перенаправления пользователя, это приведет к слишком большой задержке. 1 за идею.
Ответ №1:
Вы могли бы перенаправить на http://otherServer/handlerPage.aspx?xmlSource=http://firstServer/xmlSource.aspx?parameterForXml1=foo¶meterForXml2=bar
Затем в http://otherServer/handlerPage.aspx параметр xmlSource равен http://firstServer/xmlSource.aspx?parameterForXml1=fooamp;parameterForXml2=bar который может быть использован для получения XML-файла.