2015-11-20 6 views
1

У меня есть webFarm приложения и управление изображения HTML следующим образомКак отправить данные на другую страницу, кроме строки запроса в Web-Farm

<img id="logo" runat="server" src="" width="200" height="300" /> 

Я устанавливаю scr этого изображения из кода за следующим образом-

string mapId = "1234"; // mapId can vary 
logo.Src = "./logo.aspx?mapId=" + mapId ; 

Здесь logo.aspx является простой страницы ASPX со следующими Page_Load code-

logo.aspx

protected void Page_Load(object sender, EventArgs e) 
{ 
    Response.Clear(); 
    Response.ContentType = "image/jpeg"; 

    int mapIdValue= int.Parse(Request.Params["mapId"]); // mapId from querystring 

    string data = someFunction(mapIdValue); // to get image in Base64 String format 
    Response.BinaryWrite(Convert.FromBase64String(data)); 
    Response.End();  
} 

Это прекрасно работает.

Моя проблема в том, что я не хочу отправлять mapId в строку запроса, поскольку она предоставляется пользователю. Итак, каковы были бы возможные способы отправки mapId с моей страницы на logo.aspx.
Я не могу использовать сессию или коллекцию предметов HttpContext, так как это Webfarm.

Я попытался с помощью previousPage но не работает для меня ..

Любые идеи по этому поводу?

+0

Как насчет отправки данных с помощью Post on Submit на предыдущей странице. –

+1

Отправляйте MapId через querystring, но перед отправкой зашифруйте картуд таким образом, даже если он будет открыт для пользователя, он не принесет им пользы, поэтому здесь поддерживается безопасность. Позже на странице логотипа дешифруйте, если и продолжайте свою задачу. – Prabhat

+0

В системах безопасности запросы GET и POST не отличаются друг от друга, кроме как для того, чтобы видеть, что проводники Params или скрипач требуются. Вы должны либо использовать государственный сервер для управления сеансом, либо использовать подход БД для создания указателя маршрута (идентификатор карты ID) и отправлять этот токен вместо mapId –

ответ

0

Поскольку браузер будет получать изображение в последующем независимом запросе, сервер должен иметь возможность распознавать идентификатор карты в этом новом запросе. Обычно нет возможности использовать сеансы в веб-ферме, но для этого требуется какой-то государственный сервер/база данных, на котором работают все серверы в ферме.

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

Чтобы скрыть реальный идентификатор для клиента, вы можете создать искусственный идентификатор, например. GUID, который вы можете использовать для извлечения изображения. Вам нужно будет сохранить искусственный идентификатор, чтобы вы могли идентифицировать карту.

Вы можете ограничить искусственный идентификатор так, чтобы он был действителен только в течение некоторого времени, количества запросов или для определенного пользователя. Таким образом, клиент может использовать искусственный идентификатор в очень ограниченное время.

Конечно, это требует некоторых усилий, но должно быть стабильным и в Webfarm.