VB .NET第三方超长URL在IE11

问题描述 投票:0回答:1

我在VB .NET Web应用程序的工作。该项目面向.NET 4.0和IIS中运行。

我们与第三方应用程序的接口。我们正在使用SAML来显示我们的网站内的信息。他们要求请求URL是他们的基本URL加一个查询字符串,始终是围绕7,500 - 8,000个字符。

这工作正常,在Chrome,但在IE11的URL被切断刚刚超过4000个字符。我可以看到它在提琴手走出去喜欢,所以第三方是不负责截断。

不幸的是,我们需要支持IE11和Chrome。我们不支持任何其他的浏览器,包括早期版本的IE。 SAML响应被添加到像这样的网址:

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在IE是可能在某些情况下:https://blogs.msdn.microsoft.com/ieinternals/2014/08/13/url-length-limits/但我一直没能找到对任何更多的细节。

vb.net iis browser cross-browser internet-explorer-11
1个回答
0
投票

我能得到它的工作做:

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和边缘。

© www.soinside.com 2019 - 2024. All rights reserved.