時間:2016-11-01 17:33:19
做者:zhongxia
原文地址:https://github.com/zhongxia245/blog/issues/41javascript
故事是這樣的,有一個auth 的認證接口, validate_auth 的接口。 後端使用 go語言寫的。 正確的接口地址是 127.0.0.1:3000/api/auth/validate_token/
【注意,完成的接口地址有 / 】,至於爲何要多一個 /
這個就是後端的疏忽的。java
多一個 / 到底會引起什麼問題呢?git
注意 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