gpt4 book ai didi

asp.net-mvc - IE9 从 URL 中删除 # 部分(适用于 Firefox!)

转载 作者:行者123 更新时间:2023-12-01 05:05:02 47 4
gpt4 key购买 nike

我正在使用 ASP.NET MVC 路由 + AngularJS 路由开发一个应用程序。

我的网址看起来像:

https://example.com/Request/#/Search/Request/123

当我分解这个( http://example.com/Request )是由 ASP.NET MVC 路由处理的。即(区域=请求, Controller =“默认”, Action =“索引”)

(#/Search/Request/123) 由 AngularJS 路由处理。

当我在 http://localhost:8080/ 上时,这非常有效

问题是当我将此应用程序部署到 https://example.com/

在这种情况下,如果用户点击上面的链接(通过电子邮件接收),IE 9 只能识别(https://example.com/Request/”)并且服务器永远不会识别(#/Search/Request/123)。

我们在 Web 服务器上实现了企业 SSO。 SSO 客户端拦截 http 请求并在认证后使用 URL 重定向回请求的页面。

如果 # 片段未作为 http 请求 url 的一部分发送,则 sso 无法重定向回同一页面。

我相信这是一个常见的场景/问题。作为最后的手段,我会不断更改 URL 方案。例如(# 到 !)。

如何解决这个问题?

最佳答案

刚刚找到一个博客,正好解决了这个问题:

http://codetunnel.io/how-to-persist-url-hash-fragments-across-a-login-redirect/

他提供了两个想法:

When the page loads there simply needs to be some JavaScript that accesses the hash fragment and appends it to the redirect URL in the hidden field. Here's an example using JQuery for simplicity


$(function () {
var $redirect = $('[name="redirect"]');
$redirect.val($redirect.val() + window.location.hash);
});

或者,或者

Instead of appending the hash fragment to the hidden field value, you could avoid sending it to the server at all and simply append it to the form action URL.


$(function () {
var $loginForm = $('#loginForm');
var actionUrl = $loginForm.attr('action');
$loginForm.attr('action', actionUrl + window.location.hash);
});

关于asp.net-mvc - IE9 从 URL 中删除 # 部分(适用于 Firefox!),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29773729/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com