golang post用户名密码登陆的巨坑

栏目: Go · 发布时间: 6年前

  1. http的Header设置,按照官网或者大部分文章的设置来就可以,如下:
client := &http.Client{Transport: nil}
    req, err := http.NewRequest("POST", post_login_info_url, strings.NewReader(string(info)))
    if err != nil {
       panic(err)
    }
    //header
    req.Header.Set("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36")
    req.Header.Set("Content-Type", "application/json;charset=UTF-8")
  1. golang的http form data数据设置,golang.com官网的例子和网上大部分的文章使用url.Values最后提交的时候数据不能到达后台。 最后实在没办法,通过http client的transparent结合charles抓包,仔细对比网页直接请求和 go 请求的差异才把问题解决。 请求的form表单数据是一段json数据,而url.Values不行
  • 错误的情况
postValues := url.Values{}
    postValues.Add("expire", "7")
    postValues.Add("referer", "http%3A%2F%2Fwww.jikexueyuan.com%2F")
    postValues.Add("uname", username)
    postValues.Add("password", password)
    postValues.Add("verify", verify_code)
req, err := http.NewRequest("POST", post_login_info_url, strings.NewReader(postValue.Encode()))
  • 正确的姿势
loginInfo := LoginInfo{
        Username: username,
        Password: password,
        LoginYzm: "",
    }

    info, err := json.Marshal(loginInfo)
req, err := http.NewRequest("POST", post_login_info_url, strings.NewReader(string(info)))

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Web 2.0 Architectures

Web 2.0 Architectures

Duane Nickull、Dion Hinchcliffe、James Governor / O'Reilly / 2009 / USD 34.99

The "Web 2.0" phenomena has become more pervasive than ever before. It is impacting the very fabric of our society and presents opportunities for those with knowledge. The individuals who understand t......一起来看看 《Web 2.0 Architectures》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

随机密码生成器
随机密码生成器

多种字符组合密码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试