Сторонний удлиненный URL-адрес VB .NET в IE11 - PullRequest
0 голосов
/ 24 января 2019

Я работаю над веб-приложением VB .NET.Проект ориентирован на .NET 4.0 и работает в IIS.

У нас есть интерфейс со сторонним приложением.Мы используем SAML для отображения их информации на нашем сайте.Они требуют, чтобы URL-адрес запроса был их базовым URL-адресом плюс строка запроса, которая всегда составляет около 7500–8000 символов.

Это прекрасно работает в Chrome, но в IE11 этот URL обрезается чуть более 4000 символов.Я вижу это в Fiddler, поэтому сторонние разработчики не несут ответственности за это усечение.

К сожалению, мы обязаны поддерживать IE11 и Chrome.Мы НЕ должны поддерживать какие-либо другие браузеры, включая более ранние версии IE.Ответ SAML добавляется к URL следующим образом:

Dim samlResponseStr As String = samlResponse.ToString()
Dim bytesToEncode() As Byte = Encoding.UTF8.GetBytes(samlResponseStr)
Dim encodedData As String = Convert.ToBase64String(bytesToEncode)

Dim strUrl As String = "https://training.com/SSO/NS/SAMLPatientDisplay.aspx?SAMLResponse=" & Server.UrlEncode(encodedData)

На этом этапе, конечно, strUrl идентичен независимо от того, какой браузер я использую.

Я добавилследуя моему web.config:

<system.webServer>
    <security>
        <requestFiltering>
            <requestLimits maxQueryString="100000" maxUrl="12288" />
        </requestFiltering>
    </security>
</system.webServer>

Независимо от того, что он обрезается в той же точке.

Есть ли способ заставить IE11 разрешить этому URL выходить какis?

Спасибо!

Отредактировано, чтобы добавить: Альтернативно, есть ли способ сократить URL в коде?Это одноразовые URL, которые недействительны после первоначального запроса, поэтому нет необходимости хранить их в течение длительного времени.

Повторно отредактировано: мне не нужно нигде отображать URL - он не нуженпоявляться в адресной строке или быть в закладки или что-нибудь.Похоже, это указывает на то, что в некоторых случаях в IE возможны более длинные URL: https://blogs.msdn.microsoft.com/ieinternals/2014/08/13/url-length-limits/ Но я не смог найти более подробную информацию по этому вопросу.

1 Ответ

0 голосов
/ 11 февраля 2019

Я смог заставить его работать, выполнив:

Dim samlResponseStr As String = samlResponse.ToString()
Dim bytesToEncode() As Byte = Encoding.UTF8.GetBytes(samlResponseStr)
Dim encodedData As String = Convert.ToBase64String(bytesToEncode)

Dim strUrl As String = "https://training.com/SSO/NS/SAMLPatientDisplay.aspx?SAMLResponse=" & Server.UrlEncode(encodedData)
Response.Redirect(strUrl)

У меня возникла проблема, потому что Response.Redirect выполняется перед любым клиентским кодом.Я создал вторую страницу ASPX для отображения только.Весь код за исключением Response.Redirect происходит на моей исходной странице, а затем URL-адрес отправляется на новую страницу для отображения.

Это работает в IE11, Chrome, Firefox и Edge.

...