伪静态化和反代下的URI获取

幸运草
幸运草
幸运草
896
文章
3
评论
2020年4月2日20:13:01伪静态化和反代下的URI获取已关闭评论 316

一、伪静态化

老一代程序员会比较熟悉这个操作,假设我有个老的 Struts 项目,它一个 Action 的入口是 http://domain/action.do ,我要让形似静态网页的 http://domain/action.html 也访问到这个入口,而且数据依然是动态生成的,这就是伪静态化。

据说以前为了让搜索引擎爬自己的页面,所以要改得这么拧巴。一开始我听到还是挺无语的,这个时代还会有搜索引擎在意这个?但搜索引擎是个黑盒,假如真的导致了降权,我可背不了锅。

那么要怎么实现呢,第一想法很可能是在入口处写正则,网上的中文资料也净是这个办法。但这是绕了大弯子的!第二想法也许是写 interceptor,但这个做法也不够好。

框架之所以成为框架,是因为它对这类任务都有抽象。

两年前的 Spring Boot 解析入口时,会根据默认配置默认自动 truncate 掉.以及之后的扩展名,并将它作为返回数据类型的依据。无论是 action.do 还是 action.html ,最终被用作入口匹配的只有 action ,所以什么都不做,只要在前端把url里都加上 .html ,就可以完成这个工作。

然而就在最近几个版本,这个策略突然被关闭了,我也是找了一阵子才知道是这个原因,它导致伪静态化失败。也就是说,action.do 和 action.html 都被整个用来匹配入口,当然匹配不到任何东西。

如果重新把它开启,implement 一下 WebMvcConfiguerer(2.0以前是 WebMvcConfiguererAdapter ),作如下配置。

如果对入口匹配的细节感兴趣,可以去读读文档,说不定哪天面试就考了呢...

伪静态化和反代下的URI获取

这么做会有一个问题,有的情况下,我们不希望它把扩展名 truncate 掉,例如获取图片等静态资源(但也请根据实际情况考虑一下,是否用 nginx 直接来扛这些静态资源的请求效率更高)。

可以在入口处这么写:

伪静态化和反代下的URI获取

二、反代下的URI获取

反向代理的过程科普:服务器根据客户端的请求,从其关注的一组或多组后端服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端,客户端只会得知反向代理的IP地址,而不知道在代理服务器后面的服务器簇的存在。常用的反代服务器有nginx、apache。简而言之,假如服务器只绑定一个IP,但却要让不同域名访问IP里不同端口运行着的实例,可以用反代实现。

这个例子的场景如下:我要实现一个 RESTful 的文件上传API,上传成功后,在请求的 ResponseBody 中返回图片的 URI 。如果不清楚什么是 URI ,可以在这里把它当成图片的 URL(带 http:// 的那种)。

如果我们在本地调试,以下这段代码会生成http://localhost:9999/api/upload/fileName.jpg

伪静态化和反代下的URI获取

理想情况下,在服务器运行环境下会生成

http://www.bianhb.com/api/upload/fileName.jpg

然而对于反代背后的实例来说,如果不配置反代服务器的 header ,结果会返回带 localhost 的uri,就像在本地调试一样。

所以我们要在 nginx 里配置一下请求的真正 Host 和 scheme,配置如下。如果网站依然是 http 协议的话,scheme 这行可以省略。

伪静态化和反代下的URI获取

本文来源于:伪静态化和反代下的URI获取-变化吧
特别声明:以上文章内容仅代表作者本人观点,不代表变化吧观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与变化吧联系。

转载请注明:{{title}}-变化吧
  • 赞助本站
  • 微信扫一扫
  • weinxin
  • 赞助本站
  • 支付宝扫一扫
  • weinxin
幸运草
SQLMap-常用命令 伪静态

SQLMap-常用命令

前端SEO优化 一、搜索引擎工作原理 在搜索引擎网站的后台会有一个非常庞大的数据库,里面存储了海量的关键词,而每个关键词又对应着很多网址,这些网址是被称之为“搜索引擎蜘蛛”或“网络爬虫”程序从茫茫的互...
记一次IIS劫持处置 伪静态

记一次IIS劫持处置

晚上十一点四十,刚准备休息,收到朋友电话,其一个站点被入侵篡改,导致某web接口异常,帮忙远程处理。 D盾一把梭: 网页篡改、服务器入侵类事件处理了几年,第一反应是服务器被提权,中了后门,占用CPU、...
静态还是伪静态好,你怎么看? 伪静态

静态还是伪静态好,你怎么看?

提到伪静态,大家都不陌生了。伪静态页面,指的是通过技术手段把动态网页处理成带有.htm或者.html结尾的地址,看起来是静态页面,这样利于搜索引擎的抓取和收录! 那么,处理成伪静态后,就完了吗?答案是...