safari 与 chrome 的小区别大BUG

safari 与 chrome 的小区别大BUG

时间:2016-11-01 17:33:19
作者:zhongxia
原文地址:https://github.com/zhongxia245/blog/issues/41

一、背景

故事是这样的,有一个auth 的认证接口, validate_auth 的接口。 后端使用 go语言写的。 正确的接口地址是 127.0.0.1:3000/api/auth/validate_token/ 【注意,完成的接口地址有 / 】,至于为什么要多一个 / 这个就是后端的疏忽的。

多一个 / 到底会引发什么问题呢?

chrome 和 safari 的表现

注意 http://localhost:3000/api/auth/validate_token 中的 validate_token 是一个目录, / 才是接口名称。

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 访问该接口的情况


safari 访问该接口的情况


区别就是,** safari 不会 访问的时候,不会做一个跳转,但是 chrome 会做一次跳转。**

如果是 auth 认证, 在 chrome 认证就可以通过,但是在 safari 认证就通不过。

总结

后端接口需要写完善一点,否则引发一些这种坑爹的BUG, 很难定位。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,868评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,033评论 25 708
  • 参考原文: python开发简单爬虫Python爬虫实战Firefox抓包分析 分为五个模块:主模块、URL管理器...
    laotoutou阅读 4,298评论 0 21
  • 我妈经常跟我讲, 你要变高,得去乖乖的打篮球, 年轻人,蹦一蹦,就会长高了。 可我从来没有打过,也不想去参与, 所...
    猜名_阅读 290评论 0 1