Nginx http重定向到https时,post请求变为get的问题
上面说的都是2字头和4字头的状态码,但是比较关键的是3字头的状态码---301、302。
先写一个PHP,PHP的内容是指定使用301的方式,重定向到百度,然后在浏览器的地址栏上输入这个PHP的文件地址之后,就会蹦出百度的界面,查看其状态就是301,如图:

301的意思是“永久性重定向别的URL”,302的意思是“临时性的重定向”。使用302的方法的话,重复上面的实验,会看到状态码是302,而且回复头信息会多一个location: www.baidu.com,就是代表重定向的目的地是百度这个网址。
这里说的“永久重定向”和“临时重定向”并不是那种时间上的“永久和临时”,不是说采用了临时重定向,再关机或者重启之后,重定向的功能就消失了。比如使用搜索引擎搜索“网易”,需要在地址栏输入www.163.net,那么以后即使www.163.net的地址改变了,输入www.163.com服务器会自动链接到新地址www.wangyi.com,那么这时候使用301的话,就等于直接登陆www.wangyi.com,彻底忘记www.163.net的存在。如果是302的话,会先www.163.net,然后www.163.net的服务器返回信息给客户机,你真实需要去的是www.wangyi.com,然后客户机再去跟www.wangyi.com产生链接。
一般来说,最好使用301,这样更安全,而且省下了一步中间信息返回的步骤。
比如说有一个页面,是注册用户页面,需要输入账号、密码、手机号、电子邮箱和验证码这五个信息。在用户输入完以上的信息之后,页面会有一个跳转,提示“注册成功”或者“注册失败”,这个几秒钟的跳转也是重定向,如果成功了就会从这个短暂的界面重定向到正式登陆成功的界面,同时用户的数据就会被记录到后台的数据库里,保存到服务器里。
但是要知道,在PHP写法里使用301或者302的话,假设还是在上面的例子里,用户的信息在重定向的界面是没有被保存的,检查一下返回头信息会很轻松的发现,返回头信息开始的时候是POST,但是到了重定向的界面会变成GET。GET是获得,自然不会把信息存入数据库里,用户的信息录入等于白写。
举个例子:假设05.php是用户写注册信息的网页,用户填写完所有信息之后,系统重定向到06.php这个网页。如果这个重定向使用的是302 or 301,那么在06.php上,其实是没有任何的用户输入的信息的!如图:


302不用试了,把301抹去,默认就是302的方法,两个方法都是一样的效果,数据丢失。
这个时候怎么办?使用307,307就是在重定向中依旧保持原有的数据。
在上面的图里把301改成307,一切问题迎刃而解。而且可以看到,在05.php就是POST,在06.php里依旧还是POST。

转载自:http://blog.51cto.com/chenx1242/1747923
Nginx http重定向到https时,post请求变为get的问题的更多相关文章
- nginx 301跳转https后post请求失效问题解决
app本地请求是http端口,后来升级https强制301跳转,设置如下 server { listen 80; server name www.XXX.com; rewrite ^/(.*)$ ht ...
- nginx中实现把所有http的请求都重定向到https
在网站启用https之后,我们可能会有一个需求,就是将所有的http的请求自动地重定向到https, 如果前端是使用的nginx来实现的https,我们可以这样配置nginx的301重定向: serv ...
- node express将请求重定向为https
项目开发时,由于服务器只接受https请求(运维说了算...),所以在生产环境时,要把所有http请求全都重定向为https,具体操作是在app.js文件里加入以下代码: var express = ...
- nginx让所有的http地址重定向到https
问:为什么让所有的http都重定向到https呢?答:因为这样会使网站更安全些. 那么我是如何在nginx配置,让输入http://www.youcongtech.com或者youcongtech.c ...
- Nginx下HTTP强制重定向至HTTPS
Nginx下HTTP强制重定向至HTTPS 对于nginx来说,配置http强制重定向至https有多种多样的写法.可以直接rewrite,也可以用301重定向.但是直接拷贝网上的配置往往会出现问题, ...
- nginx开启ssl并把http重定向到https的两种方式
1 简介 Nginx是一个非常强大和流行的高性能Web服务器.本文讲解Nginx如何整合https并将http重定向到https. https相关文章如下: (1)Springboot整合https原 ...
- 如何配置Nginx,实现http访问重定向到https?
现在越来越多的网站,当我们输入域名时,会自动重定向到https,我们只需要简单修改下Nginx配置文件/usr/local/nginx/conf/nginx.conf(根据个人的实际存储路径)即可. ...
- nginx服务器http重定向到https的正确写法
http重定向到https使用了nginx的重定向命令.那么应该如何写重定向?之前老版本的nginx可能使用了以下类似的格式. rewrite ^/(.*)$ http://domain.com/$1 ...
- nginx将http升级到https并且同时支持http和https两种请求、http自动转向https
1.http升级到https 1.1.检查 Nginx 是否支持 SSL /usr/local/nginx/sbin/nginx -V configure arguments中是否有--with-ht ...
随机推荐
- aspnetcore的中间件
Run会终止中间件继续传递 app.Run(new RequestDelegate(async context => { await Task.Run(() => { context.Re ...
- 牛客网练习赛26B(简单的dp)
题目链接:https://www.nowcoder.com/acm/contest/180/B 链接:https://www.nowcoder.com/acm/contest/180/B来源:牛客网 ...
- 关于js框架 dwz 与 yii的的分页 以及筛选的结合
此为jicheng1014 原创....地址为http://jicheng1014.cnblogs.com dwz是一个不错的前端框架 但是 注意 所有的后端 都是要自己写的 常见的应用是 ...
- Oracle的表创建和事务管理
Oracle的表创建和事务管理 - CURD,根据查询结果创建新表 - 事务管理 - 什么是事务 ,为什么要用事务 - SQL99事务隔离级别 - Oracle事务隔离级别 - 事务回滚 - 隐式回滚 ...
- Cucumber 场景大纲 Scenario Outlines
引用链接:https://github.com/cucumber/cucumber/wiki/Scenario-Outlines script/cucumber --i18n zh-CN | feat ...
- 记录下laravel 5.2的auth/logout路由工作不正常的问题
- Java基础反射-调用类
Student类 package com.test.wang; import java.lang.reflect.Constructor; import java.lang.reflect.Field ...
- Linux下安装JDK及相关配置
1.官网下载JDK:选择Linux压缩包进行下载 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-213 ...
- 2013 QConf上海软件开发大会总结
带着工作中的一些疑问,我参加了在上海举办的QConf 全球软件开发大会.会议以主题的形式按分会场召开,我主要选择知名网站案例分析.大数据处理技术.高效能团队建设和金融系统架构与设计四个主题内容.三天会 ...
- Asp.net MVC 服务端验证多语言错误
服务端验证用户提交信息时为了实现多语言使用了资源文件,如: using System.ComponentModel.DataAnnotations; public class UserModel { ...