时间: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