环境:
在外网访问通过路由器映射过端口的服务器,或者使用代理访问的时候,request.getServerName()获得的始终是服务器的内网地址,导致外网很多操作无法进行。
原因:
request.getServerName()获得的是离服务器最近的IP或者域名,一般是服务器本身的IP。
介绍:
X-Forwarded-For: 10.20.156.2, 10.20.156.3 (IP)
X-Forwarded-Host: www.b.com, benni82.a.com (HOST)
X-Forwarded-Server: www.b.com, www.a.com (Server)
以上内容都是使用代理后的访问结果,从左到右,分别为离服务器最远的代理级别的信息,直到服务器本身
解决:
使用请求报头中的X-FORWARDED-HOST信息获得
String serverName = request.getHeader("X-FORWARDED-HOST");
if (serverName == null || serverName.length() < 1) {
serverName = request.getServerName() + (request.getServerPort() == 80 ? "" : (":" + request.getServerPort()));
} else if (serverName.contains(",")) {
serverName = serverName.substring(0, serverName.indexOf(",")).trim();
}
分享到:
相关推荐
ACCP 6.0 S2-5-使用JSP/Servlet/Ajax技术开发新闻发布系统 PPT课件
北大青鸟accp7.0使用JSP/Servlet技术开发新闻发布系统课件+上级+课后作业答案
ACCP6.0 S2 使用JSP/Servlet/Ajax技术开发新闻发布系统答案
使用JSP/Servlet/Ajax技术开发新闻发布系统(5~6)
北大青鸟6.0课件S2使用JSP/Servlet/Ajax技术开发新闻发布系统2,,我只能上传小于50M的文件,所以分了2次上传,下载使用JSP/Servlet/Ajax技术开发新闻发布系统1后就是全部的了。如有问题加Q:329139513.注明来意
北大青鸟ACCP6.0 使用JSP/Servlet/Ajax技术开发新闻发布系统第二部分课件以及代码答案
解决如下异常 java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/ConditionalTagSupport 的解决办法。
使用JSP/Servlet/Ajax技术开发新闻发布系统
ACCP S2 使用JSP/Servlet技术开发新闻发布系统 课件全代码+上机+简答+案例
本源码用jsp/servlet/javascript模拟了网上购物 实现了以下功能: 1.勾选某一货物时动态生成其价格和邮费 2.选择不同邮寄方式时动态生成各自的邮费 3.动态计算总费用 4.购买后显示购买详细信息
北大青鸟ACCP6.0 使用JSP/Servlet/Ajax技术开发新闻发布系统第一部分课件以及代码答案
北大青鸟 ACCP 8.0 完整版 《使用JSP/Servlet技术开发新闻发布系统》给教员的素材
使用JSP/Servlet/Ajax技术开发新闻发布系统\使用JSP/Servlet/Ajax技术开发新闻发布系统1
accp 5.0 y2 开发基于jsp/servlet/javabean的网上交易系统 项目实战1
JSP/servlet实现上传下载 JSP/servlet实现上传下载 JSP/servlet实现上传下载 JSP/servlet实现上传下载
北大青鸟ACCP8.0第二学期使用JSP/Servlet技术开发新闻发布系统的课件,PPT,上机,示列,以及课后习题,项目等
JSP/Servlet试题 带答案 。。。。。
使用jQuery和AJAX开发。在JSP/Servlet实现的JPetStore项目基础上,在表单验证、表单输入、订单更新等环节增加AJAX技术,改善项目的用户体验。