当multipart/form-data post表单时 在fidder 中抓到的WebFrom还是body
且值为空
错误截图
正确截图
加form标签了么?fildder抓到的包截图,前台代码截图。。你光这样说谁能知道呢
没加form标签 直接按照格式拼写的
@神来浮云: 。。post表单提交是需要form的,只有form标签里的东西才会被post提交上去
没有前台 直接在后台写的
@神来浮云: 直接后端模拟post提交么?用HttpWebRequest ,设置表头,然后post的数据写入试试呢
@rqx: HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.KeepAlive = true;
req.Method = "POST";
req.AllowAutoRedirect = true;
req.Connection = "keepalive";
req.CookieContainer = CookieContainers;
req.ContentType = "multipart/form-data;-----------------------------7e22ec2a140962";
req.Host = "www.xxx.com";
req.UserAgent = FireFoxAgent;
req.Accept = "ttext/html, application/xhtml+xml, image/jxr, */*";
req.Timeout = 50000;
if (req.Method == "POST" && data != null)
@rqx: 在客户端发送数据有问题
找不到哪里有问题
@rqx: 登陆的时候是默认模式,
当使用cookie提交multipart/form-data表单,
然后在客户端抓包数据为空,
@神来浮云: https://www.cnblogs.com/liuqiyun/p/6866158.html可以参考一下HttpWebRequest 的post提交,你代码中都没看到写入数据,肯定data为空啊
@rqx:
if (req.Method == "POST" && data != null)
{
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] postBytes = encoding.GetBytes(data);
req.ContentLength = postBytes.Length;
Stream st = req.GetRequestStream();
st.Write(postBytes, 0, postBytes.Length);
st.Close();
}
System.Net.ServicePointManager.ServerCertificateValidationCallback += (se, cert, chain, sslerror) =>
{
return true;
};
Encoding myEncoding = Encoding.GetEncoding("UTF-8");
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
Stream resst = res.GetResponseStream();
StreamReader sr = new StreamReader(resst, myEncoding);
string str = sr.ReadToEnd();
return str;
@神来浮云: 打断点看看postBytes是否有数据,有的话,在服务端打断点看看sr.ReadToEnd()是否有数据
@rqx:
有数据,
data里面数据看着是没错,但是错就在这里
fidder 抓不到
读出来的事cookie返回的页面
@神来浮云:你客户端和服务器是否在同一台机器上?后端模拟post提交,fidder可能抓不到,换到2台机器试试呢
@rqx:
模拟赶集发帖
不在一个机器
@rqx:
找到问题了
req.ContentType = "multipart/form-data;-----------------------------7e22ec2a140962";
少了一个分隔符boundary=
@神来浮云: 666找到原因就好
@rqx:
在ContentType = "multipart/form-data; boundary=---------------------------7e22ec2a140962";
boundary需要加空格
还是谢谢哥们的热情帮忙
昨天怎么都没找到到,今天兄弟帮忙,多谢了
@神来浮云: 客气了,同样学习一下,以前这块都头部都是复制的代码,今天也学习了