前言
填信息的登录页面在本地,自己做的;认证的页面不是我的,在不可控的服务器上
传统表单提交
main.html
<form name="form1" id="form1" method="post" action="url">
<input name="act" type="text" placeholder="账号" >
<input name="pwd" type="password" placeholder="密码">
<input id="submit" type="submit">
</form>
clicksm.js
$('#submit').click()
填好表单,对submit按钮用click()模拟点击,可以跳转到action的url,认证成功.
Ajax提交
ajaxsm.js
$.ajax({
type: 'POST',
url: "url",
data:$('#form1').serialize(),
success: function (res) {
alert("success!");
}
});
用谷歌浏览器看控制台会报错,提示跨域,认证失败
ps:jsonp无效
php+curl 提交
通过php的curl,以POST方式发送带登录信息和伪造referer字段的包,能认证成功
问题
同样是在js里,为什么能直接模拟提交按钮点击进行表单提交,却不能用ajax的方式来提交?
就只是因为跨域吗?那这个本地登录页也不同域,模拟按钮却能提交?网上谷歌百度无解,求高人点拨明辨!