标签: base-tag

对html <base>标签有什么建议?

我以前从未见过 实际使用过的<base>HTML标签.它的使用存在缺陷,这意味着我应该避免它吗?

事实上我从来没有注意到它在现代生产网站(或任何网站)上的使用让我对它持怀疑态度,尽管看起来它可能有用于简化我网站链接的有用应用程序.


编辑

使用基本标签几周后,我最终找到了使用基本标签的一些主要问题,这使得它比最初出现时更不可取.从本质上讲,变化href='#topic'href=''基本标签下是非常有它们的默认行为不兼容,并可以从默认行为,这种变化很容易使第三方库的控制范围之外的非常不可靠的 以意想不到的方式,因为它们在逻辑上依赖于默认行为.通常,这些更改是微妙的,并且在处理大型代码库时会导致不那么明显的问题.我已经创建了一个回答,详细说明了我在下面遇到的问题.因此,在您进行广泛部署之前,请自行测试链接结果<base>,这是我的新建议!

html base-tag contextpath

454
推荐指数
8
解决办法
15万
查看次数

React Router的HashRouter重定向到<base>标记网址

我有非SPA服务器端应用程序与React应用程序,仅限于当前页面,/some/static/page.应用程序<base href="/"><head>所有页面上都依赖于它,这是无法更改的.

以下是React 16,React Router 4的基本示例<HashRouter>:

export class App extends React.Component {
    render() {
        return (
            <HashRouter>
                <div>
                    <Route exact path="/" component={Root} />
                </div>
            </HashRouter>
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

可以禁用所有路由以进行测试,但这不会更改行为.

这是create-react-app显示问题的项目.复制它的步骤是:

  • npm i
  • npm start
  • 导航 http://localhost:3000/some/static/page

HashRouter显然受到影响<base>.它重定向/some/static/page/#/初始化,而我期望它是/some/static/page#//some/static/page/#/(只在IE 11中工作).

Root组件在重定向之前会快速启动/#/.

它重定向到/foo/#/的情况下<base href="/foo">,并重定向到/some/static/page/#/<base>标签被删除.

问题影响Chrome和Firefox(最新版本),但不影响Internet Explorer(IE 11).

为什么<HashRouter> …

javascript base-tag base-url reactjs react-router

10
推荐指数
1
解决办法
6922
查看次数

带有Html基本标记的Url哈希

window.location.hash

当使用链接进行javascript操作时,我通常会这样做:

<a href="#">Link Text</a>
Run Code Online (Sandbox Code Playgroud)

这样,当有人在页面加载之前点击链接时,没有任何可怕的事情发生.

Html基本标记

在我当前的项目中,我使用相同的构造,但使用基本标记:

<html>
<head>
    <base href="http://example.com/" />
</head>
<body>
    <a href="#">Link Text</a>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

但是,如果页面网址是:

http://example.com/dir/page
Run Code Online (Sandbox Code Playgroud)

单击链接导航到

http://example.com/#
Run Code Online (Sandbox Code Playgroud)

而不是

http://example.com/dir/page#
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

html javascript hash base-tag

9
推荐指数
1
解决办法
6127
查看次数

"base href"使用ui-router在路由URL中添加目录路径

摘要:

使用时<base href="/prod/public/" />,它会在路由URL中添加目录路径e.x. http://www.example.com/prod/public/home

我的角度应用程序托管在prod/public目录中.

在我的public/index.html:

<base href="/prod/public/" />
Run Code Online (Sandbox Code Playgroud)

我的路线是这样的:

$stateProvider
     .state('home', {
      url: '/home',
      templateUrl: function($stateParams) {
          var path = 'app/users/views/home.html';
          return path;
      },
      controller: 'HomeCtrl'
})
Run Code Online (Sandbox Code Playgroud)

目录结构:

public_html
      -.htaccess
      - other folders
      - prod
           - public
                - app
                - index.html
           - bower.json
           - .htaccess
           - package.json
           - gulpfile.js
           - Readme.md
Run Code Online (Sandbox Code Playgroud)

.htaccess内部prod目录:

RewriteEngine On
Options -Indexes
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond …
Run Code Online (Sandbox Code Playgroud)

.htaccess base-tag angularjs angular-ui-router ui-sref

6
推荐指数
1
解决办法
6780
查看次数

发布后忽略基本标记

在Chrome上我Refused to execute a JavaScript script. Source code of script found within request.发布包含域名的数据后发现错误(另请注意,任何一个页面都缺少javascript).

badpage1.html:

<form action="/badpage2.html" method="post">
<input type="hidden" name="name" value="href=%22http://www.w3.org/%22"/>
<input type="submit" name="submit"/>
</form>
Run Code Online (Sandbox Code Playgroud)

badpage2.html:

<!DOCTYPE html>
<html>
    <head>
        <base href="http://www.w3.org/"/>
    </head>
    <body>
        <img src="Icons/w3c_home" alt="">
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

如果你直接去badpage2.html图像会显示,但如果你去看它badpage1.html,图像将不会显示(基本标签不起作用).

这是Chrome XSS检测中的错误吗?如果不是,我该如何绕过这个?对发布的数据进行编码只是为了绕过这个过滤器似乎很愚蠢.

编辑:

就我而言,发送的帖子值是更新页面内容的一部分.如果它包含恰好包含在其中使用的域名<base>(如本例所示),它将触发禁用<base>标记的XSS检测.

html xss post redirect base-tag

5
推荐指数
1
解决办法
919
查看次数

HTML5 &lt;base&gt; 带有根相对 url 的标签

请帮助我理解<base>标签的 href 属性的功能。

我有一个网站托管在http://goodsite.org/bob. 其他网站托管在http://goodsite.org/others.

我打算将我的应用程序移至http://bettersite.org/bob.

为了支持这一点,我的标题中有一个基本网址。 <base href="/bob/">.

我的链接看起来像这样: <a href="thatonething.img">That one thing</a>

正如所希望的那样,我看到了预期的链接(例如"http://goodsite.org/bob/thatonething.img"

题:

<base>标签是否普遍支持根相对网址(即href="/bob/")?

这似乎在我的测试中有效,但我在阅读规范时遇到了一些麻烦。更一般地说,我想知道我是否滥用了这个标签。

html base-tag

4
推荐指数
1
解决办法
3119
查看次数