获取 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 方法,它会更加安全,因为它可以防止数据通过查询字符串泄漏(您在正文中发送数据)。