javascript 在Angular 1.6中,URL散列组合(#!/)前缀代替简单散列(#/)

niknxzdl  于 2023-03-11  发布在  Java
关注(0)|答案(4)|浏览(374)

自从我上次在我的项目上工作以来,我在AngularJS项目上的URL已经从localhost:3000/admin#/更改为localhost:3000/admin#!/ ...
在网上什么也没找到,有人知道这是什么吗?

jq6vz3qz

jq6vz3qz1#

它是AngularJS 1.6的新特性,添加了一个新的哈希前缀。
由于aa077e8,用于$location哈希绑定URL的默认哈希前缀已从空字符串更改为('')到爆炸('!')。如果您的应用程序不使用HTML5模式或正在不支持HTML5模式的浏览器上运行,并且尚未指定自己的哈希前缀,则客户端URL现在将包含!前缀。例如,URL将变为mydomain.com/#!/a/b/c,而不是mydomain.com/#/a/b/c
点击此处获取更多信息。

  • 如果要删除此前缀,请将以下代码添加到配置中:*
appModule.config(['$locationProvider', function($locationProvider) {
  $locationProvider.hashPrefix('');
}]);
fcg9iug3

fcg9iug32#

每个人都建议删除前缀,但您也可以简单地将!添加到客户端URL(如果不使用HTML5模式,如果您在这里,您可能会这样做)。
因此,在您的客户端文件中,按如下方式更新URL:
x一米一氮一x〉x一米二氮一x

ncgqoxb0

ncgqoxb03#

在Angular 1.6.0中,默认hashPrefix已更改为!。请参见related commit和更改日志条目。

xpcnnkqh

xpcnnkqh4#

在我的情况下,angular 1.6添加了一个标签,格式如下:本地主机:52245/回调代码= BD 55 C7 FD 4F 129 A9 CAC 1506 E225 EF 9149
但我需要这种形式:本地主机:52245/回调代码= BD 55 C7 FD 4F 129 A9 CAC 1506 E225 EF 9149
我花了一些天,直到找到解决方案。所以添加了这个配置在frondend的web.config,在<system.webServer>节:

<rewrite>
        <rules>
            <rule name="angular cli routes" stopProcessing="true">
                <match url=".*"/>
                <conditions logicalGrouping="MatchAll">
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
                    <add input="{REQUEST_URI}" pattern="^/(api)" negate="true"/>
                </conditions>
                <action type="Rewrite" url="/"/>
            </rule>
        </rules>
    </rewrite>

在那之后,一切正常

相关问题