ALWAYS_STRIP :固定执行
- Location用于替换host:port部分,如果没有就是用Request中的host
- protocolsRegex用于匹配协议,如果匹配不上,name过滤器啥都不做
- RewriteResponseHeader很好理解:修改响应header,参数有三个:header的key,匹配value的正则表达式,修改value的结果
- 下面的配置表示修改响应header中X-Response-Red这个key的value,找到password=xxx的内容,改成password=***
- SecureHeaders会在响应的header中添加很多和安全相关的内容,配置如下:
- 如果不想返回上图中的某些内容,可以在配置文件中关闭掉,如下图红框,x-frame-options和strict-transport-security两项被设置为不返回了:
- 再试试,得到如下响应,可见x-frame-options和strict-transport-security都没有返回:
- SetPath配合predicates使用,下面的配置会将请求/test/str改成/hello/str,可见这个segment是在predicates中赋值的,然后再filters中拿来用:
- SetRequestHeader顾名思义,就是改写请求的header,将指定key改为指定value,如果该key不存在就创建:
- 和SetPath类似,SetRequestHeader也可以和predicates配合,在predicates中定义的变量可以用在SetRequestHeader中,如下所示,当请求是/hello/str的时候,header中X-Request-Red的值就是Blue-str:
- SetResponseHeader顾名思义,就是改写响应的header,将指定key改为指定value,如果该key不存在就创建:
- SetStatus很好理解:控制返回code,下面的设置会返回500:
- 测试效果如下图,服务提供者的内容会正常返回,但是返回码已经被改为500了:
- 如果您想用SetStatus修改返回码,同时又不想丢掉真实的返回码,可以增加如下配置,这样真实的返回码就被放在名为original-status-header-name的key中了:
- StripPrefix是个很常用的filter,例如请求是/aaa/bbb/hello/str,我们要想将其转为/hello/str,用StripPrefix=2即可,前面两级path都被删掉了:
- 顾名思义,Retry就是重试,需要以下参数配合使用:
- retries:重试次数
- statuses:遇到什么样的返回状态才重试,取值参考:org.springframework.http.HttpStatus
- methods:那些类型的方法会才重试(GET、POST等),取值参考:org.springframework.http.HttpMethod
- series:遇到什么样的series值才重试,取值参考:org.springframework.http.HttpStatus.Series
- exceptions:遇到什么样的异常才重试
- backoff:重试策略,由多个参数构成,例如firstBackoff
- RequestSize也很常用:控制请求大小,可以使用KB或者MB等单位,超过这个大小就会返回413错误(Payload Too Large),
- 注意,如果没有设置RequestSize,Spring Cloud Gateway默认的上限是5MB
- SetRequestHostHeader会修改请求header中的host值
- 下面的配置,会将请求header中的host改为aaabbb
- 在服务提供者的代码中打断点,如下图,可见host已经被改为aaabbb
- ModifyRequestBody用于修改请求的body内容,这里官方推荐用代码来配置,如下所示,请求body中原本是字符串,结果被改成了Hello对象的实例:
- ModifyResponseBody与前面的ModifyRequestBody类似,官方建议用代码实现,下面的代码作用是将响应body的内容改为全部大写:
- 在使用第三方鉴权的时候,如OAuth2,用TokenRelay可以将第三方的token转发到服务提供者那里去:
- 记得还要添加jar包依赖org.springframework.boot:spring-boot-starter-oauth2-client
- 前面的例子中,所有filter都放在路由策略中,配合predicates一起使用的,如果您想配置全局生效的filter,可以在配置文件中做以下设置,下面的配置表示AddResponseHeader和PrefixPath会处理所有请求,和路由设置无关:
- 至此,大部分内置过滤器咱们已经了解了,有几个略微复杂的留待后面的章节深入学习
WordPress建站教程:Windows主机301重定向设置方法
作者:悦然wordpress建站(悦然建站)
(此处已添加小程序,请到今日头条客户端查看)


继续分享wordpress建站教程,今天讲一下windows主机如何设置301重定向。虽然悦然建站会推荐用户尽量使用linux主机或服务器,但是也有一些用户更习惯windows主机,而网上搜索到的301重定向教程几乎都是说linux的,windows环境的比较少,接下悦然建站就给大家分享win主机下301重定向的设置方法。
打开wordpress建站根目录下的wp-blog-header.php文件,<?php后面添加如下代码:
注意:上面的网址请换成你自己的。

有一些主机商的windows主机会提供更简单的301设置方法,如上图是西部数码win主机提供的301设置工具,只需要填写对应的网址就可以了。
用户评论
HEADERLOCATION 知识真丰富多彩!我之前根本没有意识到HEADERLOCATION的重要性,看了这篇博文后才恍然大悟。原来它在web开发中起着这么重要的作用啊!
有9位网友表示赞同!
这篇文章讲得很有道理,我以前每次看到HEADERLOCATION都会一头雾水,现在终于明白了它的作用和优点了!受益匪浅!
有15位网友表示赞同!
我也是个前端小白,对HEADERLOCATION不太了解。这篇文章写的简单易懂,很适合像我这样刚入门的人学习!感谢作者的分享!
有16位网友表示赞同!
HEADERLOCATION 的概念很重要,尤其是对于网站优化来说更是关键。这篇博客让我重新认识了它的价值,我要好好研究一下如何将它应用在我的项目中。
有10位网友表示赞同!
博文结构清晰、语言通俗易懂,针对HEADERLOCATION的介绍非常到位!作为一名web开发人员,我必须好好学习这方面的知识!
有7位网友表示赞同!
我一直觉得 HEADERLOCATION 这种东西太复杂了,读完这篇博文后才知道原来它并不难理解。感觉自己进步了不少哈~
有8位网友表示赞同!
关于 HEADERLOCATION 的介绍还是比较全面的,但我觉得可以再多说一些实际案例,这样更能帮助读者理解它的应用。
有16位网友表示赞同!
文章提到的 HEADERLOCATION 应用场景确实很普遍, 作为一名从事网站开发的同学来说,受益匪浅!不过希望作者能够更新一下最新的一些案例,以便更好地学习和参考。
有16位网友表示赞同!
HEADERLOCATION 的使用范围似乎太广了,这篇文章只提到了一个方面,我觉得应该可以扩展其他应用场景。我比较想了解 HEADERLOCATION 在移动端开发中的应用。
有17位网友表示赞同!
看了这篇博文之后,我对 HEADERLOCATION 的理解 deepened 大了许多! 特别是关于它的优缺点分析很有帮助!不过希望作者能够更新一些最新的例子!
有19位网友表示赞同!
HEADERLOCATION 这个东西太抽象了,看一篇论文反而不如看这篇文章来得简单易懂。感谢作者的科普!
有16位网友表示赞同!
文章写的不错,但我觉得关于 HEADER LOCATION 的常见问题以及解决方案部分可以详细一点,这样更实用!
有5位网友表示赞同!
这篇博文让我对HEADERLOCATION有了更全面的认识,但是我仍然想了解更多关于它的高级应用方法。
有10位网友表示赞同!
感觉这篇文章的内容还是比较基础的,我希望能看到一些更深入的分析和讨论。比如针对特定场景如何更好地利用 HEADER LOCATION等!
有15位网友表示赞同!
我觉得 HEADERLOCATION 的概念确实很容易让人理解,但实际的操作可能就比较复杂了。希望作者可以提供一些代码示例,方便大家学习!
有20位网友表示赞同!
我一直很困惑 HEADERLOCATION 到底怎么做才能达到最好的效果?这篇博文虽然解释了它本身,但我更想了解它的实践方法和技巧...
有14位网友表示赞同!