重定向

深度硬核文:Nginx的301重定向处理过程分析

旧城冷巷雨未停 提交于 2019-11-30 15:56:55
一,序言   “晚上九点,办公室里烟雾缭绕,工作进度依然没有什么进展。王二胖打开了十来个页面,一篇篇技术文章打开,关闭,Nginx不停的重启测试,在试过十来篇技术文章中的方案,经过两个小时的测试之后,王二胖终于找到了一个解决301错误跳转的可行解决方案。时间已经到了晚上十一点多."   这样的场景,在我们的办公室里天天可见。互联网上有很多Nginx 301问题处理方案的错误解答,比如自动加斜杠,端口丢失,暴露内部端口号等,极多量的文章基本就是人云亦云,没有完全弄明白Nginx如何处理301状态码的。甚至对于一些关键性的配置信息的解释是完全错误的。本着源代码就是最正确的文档的原则,我阅读了一遍Nginx处理301问题的相关源代码。 最终发现,Nginx处理301 Moved Permanently的逻辑相当简单,只有六种分支。 二,Nginx的301状态码处理逻辑设计   让我们先看看Nginx的逻辑设计是怎么样的。   HTTP协议中3xx开头的状态响应码都是表示重定向的响应。根据RFC的定义   301 Moved Permanently   302 Found   303 See Other   307 Temporary Redirect   301是永久重定向。如果使用Nginx作为HTTP 服务器,那么当用户输入一个不存在的地址之后,基本上会有两种情况,返回404状态码

登录表单的重定向与请求转发

怎甘沉沦 提交于 2019-11-30 15:18:23
具体问题描述 重定向无法访问到WEB-INF下的页面 提交登录表单后进入WEB-INF时使用的是请求转发 请求转发后的页面刷新会重新提交表单 以致于即使退出登录后返回该页面再刷新也会直接登录 解决方法 重定向到一个请求转发的方法 原方法 @RequestMapping("/login") public String login(){ return ("admin/index");//请求转发到登陆后的主页 } 改进方法 @RequestMapping("/login") public String login(){ return ("redirect:/system/toLogin");//重定向toLogin链接 } @RequestMapping("/toLogin") public String toLogin(){ return ("admin/index");//请求转发到登陆后的主页 } 来源: https://www.cnblogs.com/yxmhl/p/11601219.html

linux特殊符号

為{幸葍}努か 提交于 2019-11-30 14:31:19
> or 1> 输出重定向,清除已有内容,加入新内容。文件不存在会创建 >> or 1>> 追加输出重定向,只在文件结尾增加内容 < or 0< 输入重定向,一般是从文件里读取数据交给命令处理,箭头的方向就是数据流的方向 << or 0<< 追加输入重定向 | 管道符 .或者./ 当前目录 .. 上一级目录 / 根目录 ; 两个命令的分隔符 {} 生成一个序列 ! !m 调出最近使用的m开头的命令 !! 调出最近使用的命令 !+数字 执行第n行的命令,先用history查看 取反 ~ 当前用户的家目录 - 上一次所在的目录 \ 转义字符 来源: https://www.cnblogs.com/ligiao/p/11597518.html

老挝哪里有卖银行卡

我怕爱的太早我们不能终老 提交于 2019-11-30 13:36:24
老挝哪里有卖银行卡█ █微信:6199★984★62█ ███████████████ 8.1、Linux 多命令协作:管道及重定向 8.1.1 开源文化 开源文化的核心理念之一就是不要重复发明轮子,很多的开源软件都是现有软件、代码、功能的重新组合,就好像通过零件装配机器一样,源代码的开放和共享让这成为了可能,同时也大大的提高了效率和生产力。 8.1.2 管道和重定向 在 Linux 系统当中,大多数命令都很简单,很少出现复杂功能的命令,每个命令往往只实现或一个或几个很简单的功能,我们可以通过将不同功能的命令组合在一起使用,以达到完成某个复杂功能的目的。 Linux 中,几乎所有命令的返回数据都是纯文本的(因为命令都是运行在 CLI 下),而纯文本形式的数据又是大多数命令的输入格式,这就让多命令协作称为可能 Linux 的命令向我们提供了管道和重定向机制,多命令协作就是通过管道和重定向完成的。 命令行 shell 的数据流有以下定义: 名称 说明 编号 默认 STDIN 标准输入 0 键盘 STDOUT 标准输出 1 终端 STDERR 标准错误 2 终端 命令通过 STDIN 接收参数或数据,通过 STDOUT 输出结果或通过 STDERR 输出错误 通过管道和重定向我们可以控制 CLI 的数据流 分类 关键字 定义 例子 重定向 > 将STDOUT重定向到文件

哪里有卖四件套卡

人盡茶涼 提交于 2019-11-30 13:35:42
哪里有卖四件套卡█ █微信:619998462█ █ 8.1、Linux 多命令协作:管道及重定向 8.1.1 开源文化 开源文化的核心理念之一就是不要重复发明轮子,很多的开源软件都是现有软件、代码、功能的重新组合,就好像通过零件装配机器一样,源代码的开放和共享让这成为了可能,同时也大大的提高了效率和生产力。 8.1.2 管道和重定向 在 Linux 系统当中,大多数命令都很简单,很少出现复杂功能的命令,每个命令往往只实现或一个或几个很简单的功能,我们可以通过将不同功能的命令组合在一起使用,以达到完成某个复杂功能的目的。 Linux 中,几乎所有命令的返回数据都是纯文本的(因为命令都是运行在 CLI 下),而纯文本形式的数据又是大多数命令的输入格式,这就让多命令协作称为可能 Linux 的命令向我们提供了管道和重定向机制,多命令协作就是通过管道和重定向完成的。 命令行 shell 的数据流有以下定义: 名称 说明 编号 默认 STDIN 标准输入 0 键盘 STDOUT 标准输出 1 终端 STDERR 标准错误 2 终端 命令通过 STDIN 接收参数或数据,通过 STDOUT 输出结果或通过 STDERR 输出错误 通过管道和重定向我们可以控制 CLI 的数据流 分类 关键字 定义 例子 重定向 > 将STDOUT重定向到文件(覆盖) echo

哪里有卖四件套银行卡

爷,独闯天下 提交于 2019-11-30 13:35:39
哪里有卖四件套银行卡█ █微信:619998462█ █ 8.1、Linux 多命令协作:管道及重定向 8.1.1 开源文化 开源文化的核心理念之一就是不要重复发明轮子,很多的开源软件都是现有软件、代码、功能的重新组合,就好像通过零件装配机器一样,源代码的开放和共享让这成为了可能,同时也大大的提高了效率和生产力。 8.1.2 管道和重定向 在 Linux 系统当中,大多数命令都很简单,很少出现复杂功能的命令,每个命令往往只实现或一个或几个很简单的功能,我们可以通过将不同功能的命令组合在一起使用,以达到完成某个复杂功能的目的。 Linux 中,几乎所有命令的返回数据都是纯文本的(因为命令都是运行在 CLI 下),而纯文本形式的数据又是大多数命令的输入格式,这就让多命令协作称为可能 Linux 的命令向我们提供了管道和重定向机制,多命令协作就是通过管道和重定向完成的。 命令行 shell 的数据流有以下定义: 名称 说明 编号 默认 STDIN 标准输入 0 键盘 STDOUT 标准输出 1 终端 STDERR 标准错误 2 终端 命令通过 STDIN 接收参数或数据,通过 STDOUT 输出结果或通过 STDERR 输出错误 通过管道和重定向我们可以控制 CLI 的数据流 分类 关键字 定义 例子 重定向 > 将STDOUT重定向到文件(覆盖) echo

转发(forward)和重定向(redirect)的区别

可紊 提交于 2019-11-30 13:23:44
转发与重定向是入门JavaWeb的一个知识点,也是许多面试JAVA的后台所会遇到的一道面试题,许多的视频教程对于转发与重定向的理解并不透彻。 在这里跟我一起探究转发与重定向的魅力吧。 用户向服务器发送Http请求,作为用户没办法直观感受到请求转发的存在,但是我们的数据都是经过请求转发之后才能到达用户端的。 我们脑子里先记住一个概念: 转发(forward)=直接请求转发(forward)、重定向(redirect)=间接请求转发(redirect) 然后我举一个我看到最直观地例子带着大家入门一下: 直接转发相当于:“A找B借钱,B说没有,B去找C借,借到借不到都会把消息跟A说” 间接转发相当于:“A找B借钱,B说没有,让A去找C借”,但是A不会跟B说A借到了。 上面的例子通俗易懂可以理解了吧 接下来用专业的术语 直接转发方式: 客户端和浏览器只发出一次请求,Servlet,HTML,JSP或其他的信息资源,由第二个信息资源响应该请求,在请求对象request中,保存的对象对于每个信息资源是共享的。 直接转发方式用的更多一些,是用控制器来控制请求应该转发给哪个信息资源,然后由这些信息资源处理请求,处理完以后还以为转发给另外的信息资源来返回给用户,这个过程就是典型的MVC模式。 代码: //Servlet里处理get请求的方法 public void doGet

CLI 命令行实用程序开发基础

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-30 13:21:41
CLI 命令行实用程序开发基础 代码传送门,GoOnline平台 1. 概述 CLI(Command Line Interface)实用程序是Linux下应用开发的基础。正确的编写命令行程序让应用与操作系统融为一体,通过shell或script使得应用获得最大的灵活性与开发效率。Linux提供了cat、ls、copy等命令与操作系统交互;go语言提供一组实用程序完成从编码、编译、库管理、产品发布全过程支持;容器服务如docker、k8s提供了大量实用程序支撑云服务的开发、部署、监控、访问等管理任务;git、npm等都是大家比较熟悉的工具。尽管操作系统与应用系统服务可视化、图形化,但在开发领域,CLI在编程、调试、运维、管理中提供了图形化程序不可替代的灵活性与效率。 2. 基础知识 开发Linux命令行实用程序 Linux命令行程序设计 3. 实验过程 (1)首先开发命令行程序避免不了需要解析命令行参数,所以需要下载pflag包(CentOS中使用 go get github.com/spf13/pflag )以满足 Unix 命令行规范。 因为pflag不提供 -flagValue 的参数值绑定方法,所以没有严格按照-sNumber、-eNumber的形式设计参数,而是沿用了flag的 -flag value 、 -flag= value 和 -flag 的绑定方法。 (2

django 视图

痞子三分冷 提交于 2019-11-30 13:19:18
django 视图中常用的操作 请求方法的限制 django内置了请求方法的限制,代码放在 django.views.decorators.http 中,主要有4个装饰器来实现 require_http_methods 这个装饰器接收一个允许请求方法的列表 from django.views.decorators.http import require_http_methods @require_http_methods(["GET","POST"]) def index(request): books = Book.objects.all() context = { "books":books } return render(request,"index.html",context=context) require_GET 这个装饰器是限制视图访问的请求方式是GET from django.views.decorators.http import require_GET @require_GET def my_view(request): pass require_POST 这个装饰器是限制视图访问的请求方式是POST from django.views.decorators.http import require_POST @require_POST def my_view

软硬链接,重定向

一笑奈何 提交于 2019-11-30 12:55:27
1.软硬连接    1.1 软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。      链接文件甚至可以链接不存在的文件,这就产生一般称之为”断链”的现象,链接文件甚至可以循环链接自己。类似于编程语言中的递归。     软链接文件只是其源文件的一个标记,当删除了源文件后,链接文件不能独立存在,虽然仍保留文件名,但却不能查看软链接文件的内容了。               来自--https://baike.baidu.com/item/%E8%BD%AF%E9%93%BE%E6%8E%A5/7177481          1.1.1 创建方式 ln -s source destination 软链接的相对路径不是相对当前目录,而是软连接本身的相对路径  如下:           我要将/date/linksoft 软链接到root下,对的代码这样(我当前在data目录):ln -s ../data/linksoft ../ root 这个相对路径是相对root来讲的           错的-->> ln -s linksoft /root/ 指向本身了 lrwxrwxrwx. 1 root root 8 Sep 26 09:40 linksoft -> linksoft   1.2 一个文件有几个文件名