我遇到了一些我做过的自定义路由问题。我们有这些处理产品perma-links的自定义路由,我在后台让Angular向服务器请求非perma-links的路由。这工作正常,它将在IE以外的其他所有浏览器中加载其他页面。
在IE中发生的是它从http请求获取相对网址,它只是附加它,例如:
这是永久链接网址,可以很好地加载:
http://localhost:16124/products/7-1-2-contemporary-glass-full-border-award/
当我点击链接以自定义此产品时,这是Angular中的请求:
var navigateUrl = "Product/Customize/" + this.productId;
if (product.isCustomizable != true) {
navigateUrl = "Cart";
}
this.$window.location.href = navigateUrl;
它试图调用的网址是:
http://localhost:16124/products/7-1-2-contemporary-glass-full-border-award/Product/Customize/8036
我在其他浏览器上遇到了类似的问题,如果我使用的是Html.ActionLink,它会为永久链接页面中的任何内容构建url,它会将url作为查询字符串附加,并修复我只是将它们切换为简单的html链接我自己写了完整的相对网址,但我不认为这是问题所在;有谁知道会发生什么?我再次在IE中遇到这个问题。
答案 0 :(得分:0)
好的,所以我想出了问题是什么,如果你使用location.href,在这种情况下,IE不够聪明,不能在主机名后重做网址,所以它最终只是附加你所拥有的url的结尾,所以将其更改为location.pathname将修复该错误,因为它告诉IE显式重做主机名后的url。