用js异步提交表单后,怎么接受服务端返回的cookie

tangs · 2016-02-20 13:28:37 · 3242 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2016-02-20 13:28:37 的主题,其中的信息可能已经有所发展或是发生改变。

我用jqury.form.js 异步提交了一个登陆账号表单,服务端验证通过了,我写了一个cookie,返回的数据全被js拦截了,cookie也没有写到浏览器,我要怎么才能处理这个cookie呢? 下面是我的golang代码片段

func loginHandler(w http.ResponseWriter, r *http.Request){
    //do something
    // 获取表单信息 加 判断

    //返回cookie
    SetCookie(loginInfo.username,w)
    http.Redirect(w, r, "/", 302)
    return
}
func SetCookie(name string, w http.ResponseWriter){
    if(name != ""){
        UserOnline[name] = "online"
    } else {
        return
    }

    if encode, err := cookieHandler.Encode("cookie", UserOnline[name]);err == nil {
        cookie := &http.Cookie{
            Name:"cookie",
            Value:encode,
            Path: "/",
        }
        http.SetCookie(w,cookie)
    }
}

这是js代码

$("#login_submit").click(function(e){
        e.preventDefault();

        var options = {
            dataType: "json",
            success: function(data){
                console.log(data[0].Msg);
            },
            error: function(data){
                console.log("login status failed");
                console.log(data);
            }
        };
        $("#login").ajaxSubmit(options);
    });

同样的一个问题,我重定向之后的操作也一样被js拦截。我想过js提交,那就应该有js处理结果,可cookie怎么破啊?请大神解答,谢谢~


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3242 次点击  
加入收藏 微博
1 回复  |  直到 2016-02-23 07:15:57
tangs
tangs · #1 · 9年之前

好吧,前两天已经想到了一个办法解决,留着以后有人遇到相同问题时 看看吧~

js异步提交表单之后,服务端返回的数据,同时也会被js拦截,连服务端的重定向,也被js接收到了,不会使浏览器跳转。这时候就利用这一点,返回的数据不要是cookie,或者跳转之类,而是返回一个状态码,登陆成功或者失败不同情况的状态码。如果成功,则再一次提交表单,js正常提交表单,这时服务端就可以写入cookie ,或者各种操作了。~ :smile:

$("#login_submit").click(function(e){
//do something
    if(账号密码正确){
        loginAgain();
    }
}
function loginAgain() {
    $("#login").attr("action","loginAgain");
    $("#login").submit();
}
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传