跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • http 跨域的问题(hsts)
未分類
11 2 月 2021

http 跨域的问题(hsts)

http 跨域的问题(hsts)

資深大佬 : awanganddong 2

浏览器请求后台接口报错如下

Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request. 

后台 nginx 配置了 strict-transport-security 参数 查看日志未收到前端请求 前端清楚缓存后再次请求又成功了,过会就会又失败 定位到问题是请求接口是 https 的但是接口请求的是 http

但是对于出现这种情况的原因还是不太清楚。

这是知乎上边的一篇讲解。

https://zhuanlan.zhihu.com/p/245511588

大佬有話說 (6)

  • 主 資深大佬 : awanganddong

    当用户已经安全的登录开启过 htst 功能的网站 (支持 hsts 功能的站点会在响应头中插入:Strict-Transport-Security) 之后,支持 htst 的浏览器(比如 chrome. firefox)会自动将这个域名加入到 HSTS 列表,下次即使用户使用 http 访问这个网站,支持 htst 功能的浏览器就会自动发送 https 请求(前提是用户没有清空缓存,如果清空了缓存第一次访问还是明文,后续浏览器接收到服务器响应头中的 Strict-Transport-Security,就会把域名加入到 hsts 缓存中,然后才会在发送请求前将 http 内部转换成 https ),而不是先发送 http,然后重定向到 https,这样就能避免中途的 302 重定向 URL 被篡改。进一步提高通信的安全性。

  • 主 資深大佬 : awanganddong

    我这样理解不知道对不对

    1.用户首次 http 请求,首先发 option 预检请求(走 http ),通过之后正式 post 请求(走 http)。 这时候 strict-transport-security 会把域名加入 hsts 缓存中。
    2.第二次请求,预检请求(走 http ),通过之后正式请求(走 hsts 缓存)。跨域失败。

  • 資深大佬 : no1xsyzy

    一旦 HSTS 就不要想着 HTTP,根本没有 “接口请求的是 http” 一说,都是 HTTPS,一旦在 HSTS 期限内,永远不可能发出 HTTP,发出来请直接报 security bug 给对应浏览器。( localhost 除外)

    不知道你为什么会 3xx,OPTIONS 似乎不允许 3xx

  • 資深大佬 : markgor

    如 3L 所言,
    1 、HSTS 开启后,时间范围内走的都是 HTTPS 。
    2 、ajax 跨域流程:
    浏览器判断 ajax 是否跨域,
    发送 option 请求到 ajax 请求的 url
    返回 header 包含允许跨域信息再次发送 ajax 请求。

    你现在的问题应该是说 ajax 首次访问的是 http 的 url 地址,
    导致 option 访问的也是 http 地址。
    既然是跨域,前端为何不直接写死请求地址为 https 呢?

  • 主 資深大佬 : awanganddong

    就是我后台提供的接口是 https 的{http 也可以用},但是前端请求我接口用的是 http,然后就报错了。

    我现在对报错这个环节不太理解。

  • 資深大佬 : beastk

    hsts 无法降级

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具