获取 GET 请求未处理的拒绝
Fetch GET request unhandled rejection
我正在用 JS 向后端发出基本请求(只是为了检查用户实例是否存在,并且 return 一个 bool (true/false) 以防止 returning full用户数据直到需要)
根据同行告诉我的情况,通过路径传递敏感数据(在这种情况下是人们的电子邮件)是不明智的,应该通过正文(我没有调查原因)无论如何,所以我配置它的方式是像这样包含在正文中:
GET http://localhost:8080/User/check
Content-Type: application/json
{
"email" : "B.Nye@ABC.uk"
}
但是在 JS 中执行此调用时:
if (isAuthenticated){
console.log("test -----------")
console.log(user.email)
fetch("http://###.###.###.###:8080/User/check", {
method: "GET",
headers:{"Content-Type":"application/json"},
body: JSON.stringify( {
email: "B.Nye@ABC.uk"
})
}).then((result)=> {
if (result.ok){
console.log("sucess")
}
else{
console.log("fail")
}})}
我收到这个错误:
Unhandled Rejection (TypeError): Failed to execute 'fetch' on 'Window': Request with GET/HEAD method cannot have body.
有没有办法绕过这个,或者我是否只能使用 POST 方法并修改我的后端方法或在路径中包含用户电子邮件?
首先如果你想使用正文,你应该使用POST方法。这就是 Fetch API 不断向您发送错误的原因。
第二个问题是,为什么我们在发送电子邮件、密码等敏感数据时不使用 GET 方法。答案是,整个 URL 缓存了用户的浏览器历史记录,它可能会暴露用户的敏感信息数据。如果您使用 POST 方法,它会更加安全,因为它可以防止数据通过查询字符串泄漏(您在正文中发送数据)。
我正在用 JS 向后端发出基本请求(只是为了检查用户实例是否存在,并且 return 一个 bool (true/false) 以防止 returning full用户数据直到需要)
根据同行告诉我的情况,通过路径传递敏感数据(在这种情况下是人们的电子邮件)是不明智的,应该通过正文(我没有调查原因)无论如何,所以我配置它的方式是像这样包含在正文中:
GET http://localhost:8080/User/check
Content-Type: application/json
{
"email" : "B.Nye@ABC.uk"
}
但是在 JS 中执行此调用时:
if (isAuthenticated){
console.log("test -----------")
console.log(user.email)
fetch("http://###.###.###.###:8080/User/check", {
method: "GET",
headers:{"Content-Type":"application/json"},
body: JSON.stringify( {
email: "B.Nye@ABC.uk"
})
}).then((result)=> {
if (result.ok){
console.log("sucess")
}
else{
console.log("fail")
}})}
我收到这个错误:
Unhandled Rejection (TypeError): Failed to execute 'fetch' on 'Window': Request with GET/HEAD method cannot have body.
有没有办法绕过这个,或者我是否只能使用 POST 方法并修改我的后端方法或在路径中包含用户电子邮件?
首先如果你想使用正文,你应该使用POST方法。这就是 Fetch API 不断向您发送错误的原因。
第二个问题是,为什么我们在发送电子邮件、密码等敏感数据时不使用 GET 方法。答案是,整个 URL 缓存了用户的浏览器历史记录,它可能会暴露用户的敏感信息数据。如果您使用 POST 方法,它会更加安全,因为它可以防止数据通过查询字符串泄漏(您在正文中发送数据)。