safari 與 chrome 的小區別大BUG

safari 與 chrome 的小區別大BUG

時間:2016-11-01 17:33:19
做者:zhongxia
原文地址:https://github.com/zhongxia245/blog/issues/41javascript

1、背景

故事是這樣的,有一個auth 的認證接口, validate_auth 的接口。 後端使用 go語言寫的。 正確的接口地址是 127.0.0.1:3000/api/auth/validate_token/ 【注意,完成的接口地址有 / 】,至於爲何要多一個 / 這個就是後端的疏忽的。java

多一個 / 到底會引起什麼問題呢?git

chrome 和 safari 的表現

注意 http://localhost:3000/api/auth/validate_token 中的 validate_token 是一個目錄, / 纔是接口名稱。github

var authHeaders = JSON.parse(localStorage.authHeaders)

fetch("http://localhost:3000/api/auth/validate_token", {
  method: "GET",
  headers: {
    "authorization": "Bearer "+authHeaders.access_token,
  }
})
.then(function (res) {
  if (res.ok) {
    alert("Perfect! Your settings are saved.");
    console.log(res.json())
  } else if (res.status == 401) {
    alert("Oops! You are not authorized.");
  }

chrome 訪問該接口的狀況
chrome

safari 訪問該接口的狀況
json

區別就是, safari 不會 訪問的時候,不會作一個跳轉,可是 chrome 會作一次跳轉後端

若是是 auth 認證, 在 chrome 認證就能夠經過,可是在 safari 認證就通不過。api

總結

後端接口須要寫完善一點,不然引起一些這種坑爹的BUG, 很難定位。fetch

相關文章
相關標籤/搜索