Fetch方法不发送带有post的内容



Bellow是我为登录uni-web应用程序而编写的代码的一部分。当我在Postman中使用以下参数发帖时,它允许我登录并重定向到个人资料页面,但当我从应用程序发帖时,什么都不会发生。我用Charles检查请求,发现请求的内容是空的。我通过网络定期登录时,在浏览器(网络监视器和源代码(中发现了这些参数。

这个方法取自Postman,所以我认为它应该像在Postman中一样在应用程序中工作。

const loginHandler = () => {
console.log("-----------------!!!-------------");
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/x-www-form-urlencoded");

var urlencoded = new URLSearchParams();
urlencoded.append("__EVENTTARGET", " ");
urlencoded.append("__EVENTARGUMENT", " ");
urlencoded.append(
"__VIEWSTATE",
"stg"
);
urlencoded.append("__VIEWSTATEGENERATOR", " xxx");
urlencoded.append(
"__EVENTVALIDATION",
" /something"
);
urlencoded.append("txtLogin", " username");
urlencoded.append("txtPassword", " pass");
urlencoded.append("btnLogin", " Login");
var requestOptions = {
method: "POST",
headers: myHeaders,
body: urlencoded,
redirect: "follow",
};
fetch(
"http://example/login.aspx",
requestOptions 
)
.then((response) => response.text())
.then((result) => console.log(result))
.catch((error) => console.log("error", error));
};

身体可能没有正确编码吗?

我找到了解决方案。第一个问题是Postman生成了fetch()方法,该方法使用了主体数据的URLSearchParams()接口,当我将其更改为FormData()时,它开始按我的意愿工作。第二个问题是,我不明白为什么,当我换成FormData()时,标题给了我一个error [TypeError: Network request failed],当我把它们注释掉时,一切又好了。

我没有尝试将"Content-Type"更改为其他内容,并检查它是否有效,但我会的。

最新更新