307跳转php,http 307重定向

307跳转php,http 307重定向刚才在做 hexo 页面优化 发现了本地测试返回 http307 以前没见过这个响应码 于是做一下调研 相关文章 http307 在 rfc 规范中 http307Tempo 是临时重定向 平时常见的重定向是 301 PermanentlyM 永久重定向 302 TemporarilyM 临时重定向 http307 和 302 的区别在于 307 要求客户端不改变

刚才在做hexo页面优化,发现了本地测试返回http 307。以前没见过这个响应码,于是做一下调研。

http_code_307.png

相关文章:

http 307

在rfc规范中,http 307 Temporary Redirect 是临时重定向。

平时常见的重定向是:

301:Permanently Moved,永久重定向

302:Temporarily Moved,临时重定向

http 307和302的区别在于:307要求客户端不改变原先的请求方法,对在Location头部中规定的URI进行访问。对于302,很多客户端的实现是,直接使用GET方式访问重定向地址。

例子

客户端请求

1

2

POST /index.php HTTP/1.1

Host: www.example.org

服务器端响应

1

2

HTTP/1.1 307 Temporary Redirect

Location: https://www.example.org/

那么客户端必须以POST方式重定向访问https://www.example.org/。

本地测试产生http 307

next的_config.yml配置

1

2

3

4

5

6

7

8

9

# Internal version: 2.1.5 & 3.5.7

# See: https://fancyapps.com/fancybox

# Example:

# fancybox: //cdn.jsdelivr.net/gh/fancyapps/fancybox@3/dist/jquery.fancybox.min.js

# fancybox: //cdnjs.cloudflare.com/ajax/libs/fancybox/3.5.6/jquery.fancybox.min.js

# fancybox_css: //cdn.jsdelivr.net/gh/fancyapps/fancybox@3/dist/jquery.fancybox.min.css

# fancybox_css: //cdnjs.cloudflare.com/ajax/libs/fancybox/3.5.6/jquery.fancybox.min.css

fancybox: //cdnjs.cloudflare.com/ajax/libs/fancybox/3.5.6/jquery.fancybox.min.js

fancybox_css: //cdnjs.cloudflare.com/ajax/libs/fancybox/3.5.6/jquery.fancybox.min.css

平时写url地址,一般是http或者https,但是next里面的例子都是//。

//的意义是,沿用当前页面的协议。如果当前页面是http协议,那么发出去的请求就是http;如果是当前页面是https,那么发出去走https。

//写法的好处是,不需要关注协议,只需要关注URI路径。如果哪一天发生协议变更,比如http升级为全站https,那么代码完全都不用修改。

但是这没有解释为什么返回了http 307。

http_code_307.png

仔细看看response header,除了Location指示重定向地址外,还有

1

Non-Authoritative-Reason: HSTS

HSTS是HTTP严格传输安全(英语:HTTP Strict Transport Security),之前的文章提到过:

因为本地测试,使用http://localhost:4000访问,所以//的页面协议是http。但是cloudflare.com开启了HSTS,所有请求都必须是https协议。对cloudflare.com原来的http请求必须升级为https。

事实上,这个307响应不是cloudflare.com产生的,是chrome浏览器干的好事。

The way Chrome shows this in the network tab is by creating a dummy 307 response with a redirect to the https version of the address. But that’s a fake response and is not generated by the server – the reality is Chrome did that internally before the request even went to the server.

注意到,rfc定义http 307是Temporary Redirect,而截图显示的是Internal Redirect。 回想到HSTS只在第1次http访问之后才会生效。如果chrome不做这个返回,会是怎样的流程呢:

本地客户端http方式访问cloudflare.com

服务器表示要以https方式访问资源

于是本地客户端以https方式再次访问cloudflare的资源

中途多了一次网络请求。

因为chrome维护了一份HSTS站点列表,知道cloudflare必须要https方式请求。于是截获http请求后,直接以https方式访问,同时做出dummy 307响应。

小实验

把next的_config.yml从//修改为https://,再测试

http_code_200.png

直接就是http 200了。

c711140e3e1385b50a57be3ad89d08bbace.jpg

小结

//比写死具体http、https更加灵活,推荐使用

http 307 Temporary Redirect,临时重定向,客户不能改变请求方式

chrome知道HSTS站点,会自动把这些站点的http请求改写为https,同时在response header增加Non-Authoritative-Reason: HSTS,并且把307响应码解析为Internal redirect

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/213233.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午6:17
下一篇 2026年3月18日 下午6:17


相关推荐

  • shell脚本之环境变量

    shell脚本之环境变量linux系统环境变量配置文件所在位置/etc/profile/etc/profiled/*.sh~/.bash_profile~/.bashrc/etc/bashrc配置文件的执行过程注销时生效的环境变量配置文件~/.bash_logout历史命令存储位置~/bash_historyshell登录信息本地终端欢迎信息:/etc/issue远程终端欢迎信息:/etc…

    2022年5月27日
    43
  • Debug.WriteLine输出调试信息[通俗易懂]

    Debug.WriteLine输出调试信息转载于:https://www.cnblogs.com/xuyuchen/p/8283023.html

    2022年4月10日
    104
  • mybatis动态SQL常用的标签

    mybatis动态SQL常用的标签在使用 sql 片段时使用 include 标签通过 sql 片段的 id 进行引用 sql 片段的 id 在当前空间是唯一的 sql 片段中也可以写其他的内容 只要符合语法规范都是可以的

    2026年3月17日
    2
  • Rectified Linear Unit_激活函数图像

    Rectified Linear Unit_激活函数图像传统Sigmoid系激活函数传统神经网络中最常用的两个激活函数,Sigmoid系(Logistic-Sigmoid、Tanh-Sigmoid)被视为神经网络的核心所在。从数学上来看,非线性的Sigmoid函数对中央区的信号增益较大,对两侧区的信号增益小,在信号的特征空间映射上,有很好的效果。从神经科学上来看,中央区酷似神经元的兴奋态,两侧区酷似神经元的抑制态,因而在

    2025年6月30日
    4
  • Dubbo协议介绍

    Dubbo协议介绍关于 Dubbo 使用的 demo 我在这就不多介绍了 因为很简单 网上资源也很多 在这里我简单介绍一下 Dubbo 的配置中使用到的最常用的协议 在介绍协议之前 首先要介绍一下 Dubbo 的线程模型事件处理线程说明如果事件处理的逻辑能迅速完成 并且不会发起新的 IO 请求 比如只是在内存中记个标识 则直接在 IO 线程上处理更快 因为减少了线程池调度 但如果事件处理逻辑较慢 或者需要

    2026年3月17日
    1
  • modelsim安装_Modelsim10.5安装教程

    modelsim安装_Modelsim10.5安装教程1.鼠标右击软件压缩包,选择“解压到modelsim-win64-10.5”。2.打开解压后的文件夹,鼠标右击“modelsim-win64-10.5”,选择“以管理员身份运行”。3.点击“下一步”。4.点击“浏览”选择软件的安装路径(建议安装在C盘以外的其他磁盘,且安装路径不要有中文),点击“下一步”。…

    2022年5月23日
    128

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号