Http Basic Auth的登录表单

Pou*_*yan 12 forms login http basic-authentication

我正在运行名为bitlfu 的Perl应用程序.对于登录,它使用类似Apache HTTP Basic Auth但不是表单.我想使用用户名和密码字段为登录创建表单.我已经尝试过JavaScript和PHP,直到现在还没有结果.

所以我需要帮助!

PS:这种网址有效

http://user:password@host.com
Run Code Online (Sandbox Code Playgroud)

Aif*_*Aif 7

我认为一个简单的JavaScript就像:

document.location='http://' + user + ':' + pass + '@mydomain.tld';
Run Code Online (Sandbox Code Playgroud)

应该做的工作.

所以基本上,你必须创建一个表单,用户和pass字段,然后onsubmit,使用这里给出的JavaScript部分:

<form method="post" onsubmit="javascript:document.location='http://' + $('login') + ':' + $('pass') + '@mydomain.tld';">
    <input type="text" name="login" id="login" />
    <input type="password" name="pass" id="pass" />
    <input type="submit" value="ok"/>
</form>
Run Code Online (Sandbox Code Playgroud)

其中$()是document.getElementById或jquery左右.我使用$()函数来缩短代码.这是一个实现,它不适用于每个浏览器.再次,看看为跨浏览器解决方案抛出jQuery.

function $(_id) { return document.getElementById(_id); }
Run Code Online (Sandbox Code Playgroud)

否则,您可以使用php并使用标头位置重定向用户.

php方式:

<?php

if (isset($_POST['login']) && isset($_POST['password'])) { header('Location: ' . urlencode($_POST['login']) . ':' . urlencode($_POST['password']) . '@domain.tld'); }
else
{
?>
<form method="post" onsubmit="javascript:document.location='http://' + $('login') + ':' + $('pass') + '@mydomain.tld';">
    <input type="text" name="login" id="login" />
    <input type="password" name="pass" id="pass" />
    <input type="submit" value="ok"/>
</form>

<?php
}
Run Code Online (Sandbox Code Playgroud)

  • 停产!所有主流浏览器都放弃了对此的支持.很多问题...... (3认同)