我有一个aspnet web应用程序,它托管在我的本地iis上。在其他Web应用程序中,我想要一个链接,当我点击链接时,它应该打开我的托管Web应用程序而不询问凭据。我使用下面的代码来做到这一点,但它不起作用。
<html>
<script type="text/javascript">
function OpenURL() {
var form = document.createElement("form");
form.setAttribute("method", "POST");
form.setAttribute("action", "http://10.10.10.10/Domain/Login.aspx");
var hiddenField = document.createElement("input");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", "UserName");
hiddenField.setAttribute("value", "UserTest");
form.appendChild(hiddenField);
var hiddenField2 = document.createElement("input");
hiddenField2.setAttribute("type", "hidden");
hiddenField2.setAttribute("name", "Password");
hiddenField2.setAttribute("value", "PasswordTest");
form.appendChild(hiddenField2);
document.body.appendChild(form);
form.submit();
}
</script>
<body onload="OpenURL();">
</body>
</html>
任何人都可以帮助我吗?
答案 0 :(得分:0)
您可以尝试在您的onLoad中添加实际的html标签,只需提交表单,如下所示: (伪代码只是给出一个提示,不能测试它atm)
<body onLoad="javascript:myform.submit();">
<form name="myform"...>
<input ...>
<input ..>
</form>
</body>
答案 1 :(得分:0)
尝试所有输入元素:
hiddenField.type = "hidden";
hiddenField.name = "UserName";
hiddenField.value = "UserTest";
而不是:
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", "UserName");
hiddenField.setAttribute("value", "UserTest");
答案 2 :(得分:0)
我认为最好是在托管的Web应用程序上设置正确的端点,而不是直接使用javascript传递/分配凭据。
您可以创建一个模拟登录提交功能的控制器方法,传递加密信息并在托管Web应用程序上解码,并在处理加密凭据后设置登录页面。像,
http://10.10.10.10/Domain/LoginRedirect?data=your_encrypted_data_here
但是,如果您要做的是在托管的Web应用程序上获取/保存/更新某些信息,您可以尝试创建api端点,并使用restful调用进行身份验证/执行。