由于某些未知原因,我在Visual Studio 2015中调试时将 '#!' 添加到我的应用网址。
网址看起来像这样
http://localhost:58394/#!/customers
http://localhost:58394/#!/
我搜索了所有应用程序,如果这是某种拼写错误,但我无法弄清楚这是从哪里来的。
我可以在ASP.NET WEB API以及ASP.NET CORE WEB API中看到...
对于前端我使用角度和角度路线 1.6.0
任何想法来自哪里?
我没有使用html5mode也没有使用基本标签,我很高兴#现在在那里,我只是不明白为什么感叹号(!)在那里......
此应用不会在网络上部署,也不会使用任何可能使用#的外部服务!任何跟踪或其他任何内容的表示法。
感叹号最近才开始出现,所以我想这是由我使用过的一些lib引起的。
我只是想知道为什么'!'在那里以及哪个图书馆强迫这里感叹。
答案 0 :(得分:5)
我在angualr 1.6.0 changelog
中找到了这个$ location:默认hashPrefix为'!' (aa077e,#13812)
更改日志:https://github.com/angular/angular.js/blob/master/CHANGELOG.md
更改:https://github.com/angular/angular.js/commit/aa077e81129c740041438688dff2e8d20c3d7b52
突然改变
$location
hash-bang网址的哈希前缀已经改变了 空字符串""到了爆炸"!"。如果您的应用程序不使用 HTML5模式或正在不支持HTML5模式的浏览器上运行, 并且您没有指定自己的哈希前缀,而是指定客户端URL 现在将包含一个"!"字首。例如,而不是mydomain.com/#/a/b/c
将成为mydomain/#!/a/b/c
。
恢复旧方式只需使用
appModule.config(['$locationProvider', function($locationProvider) {
$locationProvider.hashPrefix('');
}]);
答案 1 :(得分:1)
你应该申请this,以免有角度
的哈希爆炸$locationProvider.html5Mode({
enabled: true,
requireBase: false
});
<head>
<base href="/">
...
</head>
对于角度2,这就足够了,我想:
<base href="/" />
根据你的评论,似乎有些你如何切换Hashbang模式
配置:
$routeProvider
.when('/path', {
templateUrl: 'path.html',
});
$locationProvider
.html5Mode(false)
.hashPrefix('!');
请参阅this