传统表单模拟点击提交成功,但Ajax报跨域错误

前言

填信息的登录页面在本地,自己做的;认证的页面不是我的,在不可控的服务器上

传统表单提交

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的方式来提交?
就只是因为跨域吗?那这个本地登录页也不同域,模拟按钮却能提交?网上谷歌百度无解,求高人点拨明辨!

阅读 1.6k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进