簡體   English   中英

獲取 GET 請求未處理的拒絕

[英]Fetch GET request unhandled rejection

我正在向 JS 中的后端發出基本請求(僅檢查用戶實例是否存在,並將返回一個 bool (true/false) 以防止在需要之前返回完整的用戶數據)

從同行告訴我的情況來看,通過路徑傳遞敏感數據(在這種情況下是人們的電子郵件)是不明智的,應該通過正文(我還沒有研究為什么)無論如何,所以我配置它的方式是像這樣包含在體內:

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")
  }})}

我收到此錯誤:

未處理的拒絕(類型錯誤):無法在“窗口”上執行“獲取”:使用 GET/HEAD 方法的請求不能有正文。

有沒有辦法繞過這個,或者我是否僅限於使用 POST 方法並重新設計我的后端方法或在路徑內包含用戶電子郵件?

首先,如果你想使用 body,你應該使用 POST 方法。 這就是 Fetch API 不斷向您發送錯誤的原因。

第二個問題是,為什么我們在發送電子郵件、密碼等敏感數據時不使用 GET 方法。答案是,整個 URL 都緩存了用戶的瀏覽器歷史記錄,它可能會暴露用戶的敏感數據。 如果您使用 POST 方法,它將更加安全,因為它可以防止通過查詢字符串(您在正文中發送數據)泄漏數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM