`

JSP/Servlet使用代理或路由器映射时获取服务器地址为内网地址

    博客分类:
  • Java
阅读更多

环境:

在外网访问通过路由器映射过端口的服务器,或者使用代理访问的时候,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();
}
 
分享到:
评论
1 楼 请叫我翠西狗 2016-11-08  
那如果我要用this.getServletContext()
.getRequestDispatcher()
怎么办,获取到的还是内网地址,还是没法进行外网跳转。

相关推荐

    ACCP 6.0 S2-5-使用JSP/Servlet/Ajax技术开发新闻发布系统 PPT课件

    【ACCP 6.0 S2-5】课程主要涵盖了使用JSP(JavaServer Pages)、Servlet和Ajax技术来开发新闻发布的系统。这是一个典型的Web应用程序开发主题,旨在教授学员如何利用这些技术构建动态、交互式的网站。 JSP是Java...

    北大青鸟6.0课件S2使用JSP/Servlet/Ajax技术开发新闻发布系统2

    北大青鸟6.0课件S2使用JSP/Servlet/Ajax技术开发新闻发布系统2,,我只能上传小于50M的文件,所以分了2次上传,下载使用JSP/Servlet/Ajax技术开发新闻发布系统1后就是全部的了。如有问题加Q:329139513.注明来意

    使用JSP/Servlet/Ajax技术开发新闻发布系统2

    在本项目中,“使用JSP/Servlet/Ajax技术开发新闻发布系统2”是北大青鸟ACCP6.0课程的一部分,旨在教授学员如何构建一个动态、交互式的新闻发布平台。这一部分通常涵盖系统的后端开发和部分前端增强功能。下面将详细...

    ACCP6.0 S2 使用JSP/Servlet/Ajax技术开发新闻发布系统

    在IT行业中,ACCP(Accelerated Computer Certified Professional)是一套针对软件开发人员的培训课程,其6.0版本的第二阶段(S2)主要聚焦于Web应用开发,特别是使用JSP(JavaServer Pages)、Servlet和Ajax...

    使用JSP/Servlet/Ajax技术开发新闻发布系统(5~6)

    在本教程中,我们将深入探讨如何使用JSP(JavaServer Pages)、Servlet和Ajax技术来开发一个功能完善的新闻发布系统。这通常涉及到动态网页的创建、服务器端处理以及客户端的异步数据交互,从而提供流畅的用户体验。...

    ACCP S2 使用JSP/Servlet技术开发新闻发布系统

    【ACCP S2 使用JSP/Servlet技术开发新闻发布系统】是一个面向初学者的课程,旨在教授如何使用Java服务器页面(JSP)和Servlet技术来构建一个动态、交互式的新闻发布平台。这个课程涵盖了从基础概念到实际开发的完整...

    使用JSP/Servlet技术开发新闻发布系统.7z

    本项目"使用JSP/Servlet技术开发新闻发布系统"是基于ACCP8.0框架,旨在教授如何利用这两项技术构建一个功能完善的新闻发布平台。 **JSP技术** 1. **JSP基本概念**:JSP是一种服务器端脚本语言,允许开发者在HTML...

    北大青鸟ACCP7.0使用JSP/Servlet技术Y2课件

    【标题】北大青鸟ACCP7.0使用JSP/Servlet技术Y2课件 【内容详解】 北大青鸟的ACCP7.0课程是针对IT行业初学者和进阶者设计的一套全面的编程教育体系,特别是对于Java Web开发领域。在第二学年(Y2)的学习中,重点...

    使用JSP/Servlet/Ajax技术开发新闻发布系统1

    在本课程中,我们将深入探讨如何使用JSP(JavaServer Pages)、Servlet和Ajax技术来构建一个新闻发布系统。这个系统能够实现实时的数据交互,提供动态更新的新闻展示,提升用户体验。以下是这些关键技术的详细说明:...

    jsp/servlet分页带查询示例

    【标题】"jsp/servlet分页带查询示例"是一个典型的Web开发教程,它涵盖了如何在Java Web应用程序中实现分页查询的功能。这个示例包括了必要的组件和步骤,帮助开发者理解如何在JSP(JavaServer Pages)和Servlet中...

    jsp/servlet blog

    在这个名为“jsp/servlet blog”的项目中,我们看到一个基于这两项技术的简单博客系统。** **JSP** 是一种服务器端脚本语言,它允许开发人员在HTML页面中嵌入Java代码,使得动态内容的生成变得更加方便。JSP文件...

    使用JSP/Servlet/Ajax技术开发新闻发布系统\使用JSP/Servlet/Ajax技术开发新闻发布系统1

    在JSP/Servlet/Ajax组合中,Servlet通常扮演控制器的角色,接收用户请求,调用业务逻辑,然后将结果返回给JSP进行展示。在新闻系统的实现中,Servlet可能包含处理新闻添加、删除、修改以及搜索等功能的逻辑。 ...

    使用JSP/Servlet/Ajax技术开发新闻发布系统

    总结,"使用JSP/Servlet/Ajax技术开发新闻发布系统"涉及到的技术栈广泛,包括前后端交互、数据库操作、MVC设计模式等多个方面,开发者需要掌握这些技能才能成功构建出高效、用户体验良好的新闻发布平台。

    accp 5.0 y2 开发基于jsp/servlet/javabean的网上交易系统 项目实战1

    在本项目实战中,我们将深入探讨如何使用Java...通过这个项目实战,学习者不仅可以掌握JSP、Servlet和JavaBean的基本使用,还能了解Web开发的流程,提升解决实际问题的能力,为未来在Java Web领域的工作打下坚实基础。

    ASP转JSP/SERVLET

    - ASP运行在IIS(Internet Information Services)上,依赖Windows环境,而JSP/Servlet可在任何支持Java的Web服务器或应用服务器上运行,如Tomcat、Jetty等,具备更好的跨平台性。 - JSP/Servlet的性能通常优于ASP...

    jsp/servlet帮助文档

    **JSP(JavaServer Pages)和Servlet是Java Web...总结,"jsp/servlet帮助文档"涵盖了JSP和Servlet的基本概念、使用方式以及相关API。通过深入学习和理解这些知识,开发者能够有效地构建和维护高性能的Java Web应用。

    S2 使用JSP/Servlet技术开发新闻发布系统

    【标题】:“S2 使用JSP/Servlet技术开发新闻发布系统” 在Web开发领域,JSP(JavaServer Pages)和Servlet是两种重要的技术,常用于构建动态、数据驱动的Web应用程序,如新闻发布系统。本项目“S2 使用JSP/Servlet...

    《使用JSP/Servlet/Ajax技术开发新闻发布系统》

    《使用JSP/Servlet/Ajax技术开发新闻发布系统》 内部测试-笔试试卷 一、选择题(共25题,每题2分,满分100分) 1) JSP表达式语言可用于在网页上生成动态内容并代替JSP脚本元素,JSP表达式语言的语法是(B)。 A. {EL...

    jsp/servlet个人学习笔记

    **JSP(JavaServer Pages)/Servlet 知识详解** JSP 和 Servlet 是 Java Web 开发中的核心组件,它们在构建动态网站时起着至关重要的作用。以下是对这两个技术及其相关概念的详细解释: 1. **JSP 基础** JSP 是一...

    jsp/servlet实现的旅游管理系统

    《基于JSP/SERVLET实现的旅游管理系统详解》 在当今信息化社会,旅游管理系统作为旅游业的重要组成部分,已经广泛应用于各类旅行社、酒店预订、景点管理等多个领域。本系统以JSP(JavaServer Pages)和Servlet技术...

Global site tag (gtag.js) - Google Analytics