`
mywebuser
  • 浏览: 5709 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

通过代理或者转发时不能获取serverName的解决办法

 
阅读更多
最近做了一个J2EE的项目,门户需要将我们的项目集成进去,但在集成时,出现问题了,单点登录完成后,后续的请求从session里取得登录信息时,却取不到,经过调试发现,request.getServerName()取得值,不是从门户来的ip,而是本机的ip,测试发现,启动项目,如果用域名访问,request.getServerName()就是域名,用ip,该值就是ip,该值一般与浏览器地址栏一致的,因这个值在我们的jsp页面会用到
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

造成在二次请求时,html的基地址成了本机地址,在浏览器中就会根据请求地址生成cookie的code不同,当然在获取session时,也是不同的,后续是拿不到第一次请求生成的session中的登录信息的。
因门户与我们不是同一个公司做的项目,我们的应用没法与他们的门户应用集成,就成了件扯皮的事,我说你得将你门户代理中,将serverName改一下,应该就没事了,但他们说改不了,而且还说别的应该都已经集成进来了,还说让我们改程序,可是要知道,我们的所有页面都有这个,那意味着,改后所有的功能都得测试一遍,这个代价太大了,所以没答应。
一个偶然事件,我发现了一个同样的问题,公司内网安装了一个正在开发的应该,因需要这个应该在外网访问,就让网管把此应该弄个外网的ip,在访问该应用时,发现在内网可以正常访问,但在用外网ip时,登录后就会现登录不成功,在外网访问时,网页不正常图2



我就觉得这跟上面的问题可能是一样的,在页面中右键,查看源码


果然是访问地址与base地址不一样,我觉得有戏,与是找网管,问他这个代理是用什么软件做的,他说是ISA,我就让网管打开这个软件的设置,看到了一项“转发初始主机头”,让他给勾选上



再试一下,果然有戏,一切正常,再看一下源码



访问的ip与base中的ip一样了,很高兴,把这个解决问题的过程发给门户网站的人,他们看后,就协调了他们公司的人,重新设置了一下,联调成功
  • 大小: 8.7 KB
  • 大小: 132.7 KB
  • 大小: 135.3 KB
  • 大小: 60.6 KB
分享到:
评论

相关推荐

    SERVERNAME与SERVICENAME不一致

    场景在MSSQL DBA日常工作过程中,经常会遇到这样的场景,Windows Server上安装好默认的MSSQL 实例后,修改了Windows的主机名。这个时候,就会导致“@@SERVERNAME和SERVERPROPERTY('servername')不一致 “的问题

    apache反向代理

    而在一个繁忙的网站上这一连接数量也许不能满足需要,特别是本文介绍的通过防火墙上的Apache反向代理允许外部用户访问多个内部Web服务器的情况,可以采用更改src/include/httpd.h文件的方法,具体步骤如下。...

    reverse-proxy:通过Netty基于Java NIO的https代理服务器的实现

    要通过openssl进行测试,只需使用以下命令: openssl s_client -connect localhost:80 -servername test.localdomain 2&gt;&1 因此,您将能够查看该协议是否与我们正在发送的SNI匹配。 为了确保我们的证书在Google ...

    详解proxy_pass根据path路径转发时的”/”问题记录

    在nginx中配置proxy_pass时,如果是按照^~匹配路径时,要注意proxy_pass后的url最后的/。当加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走。...

    shiyan.zip_实现客户机类

    定义字符型静态数据成员ServerName,保存其服务器名称;整型静态数据成员ClientNum,记录已定义的客户数量;定义静态函数ChangeServerName()改变服务器名称。在头文件client.h中定义类,在文件client.cpp中实现,在...

    server name

    是有关C# 程序开发的帮助 有利于开发程序等 能提供IP 。端口哦

    sql2008安装后服务器改名造成名称不一致解决方法

    用select @@servername和select serverproperty(‘servername’)一查看服务器名是否一致 如果不一致,则以serverproperty(‘servername’)为准 解决办法: 代码如下: exec sp_dropserver @server = ‘服务器名’ ...

    Windows服务启动调用Java App --附vc6源码

    创建/移除windows服务,服务启动时将调用指定JAVA应用程序JAR 环境VC6 创建服务时带JAR文件及JVM环境设置,服务启动时创建JVM环境调用JAR程序 NTService.exe [ install | remove ] install: service install ...

    Apeache启动不成功时,用命令行检测的方法

    1,在配置Apache服务器时,经常要在httpd.conf 修改和添加一些代码,编写中,误写或者写错时,无法正常启动时,直接报错The requested operation has failed! 2,对于新手来说,并不容易找出Apache的配置错误处,这...

    创奇档案管理系统

    6666 6666 借阅员 借阅(不能增删改记录,可以查询及借阅记录) 8888 8888 查询员 查询(不能增删改记录,仅可以查询记录) 安装后软件文件夹下有一个数据库配置文件(conn.ini) 默认是创奇演示数据库,通过互联网...

    jsp九大内置对象

    由于代理服务器、缓存等的使用,唯一能帮助网站精确统计来访人数的方法就是为每个访问者建立一个唯一ID。使用Cookie,网站可以完成一下工作。  ● 测定多少人访问过。  ● 测定访问者有多少是新用户(即第一次...

    用VB编写OPC客户端访问WINCC

    Const ServerName = "OPCServer.WinCC" 'OPC的类型 Const NodeName = "GUK" '结点名,即计算机名 'Dim NodeName As String Dim WithEvents MyOPCServer As OPCServer 'OPC服务 Dim MyOPCGroupColl As OPCGroups ' ...

    实现客户机(CLIENT)类。

    声明字符型静态数据成员ServerName,保存其服务器名称;声明整型静态数据成员clientNum,记录已定义的客户数量;定义静态函数ChangeServerName()改变服务器名称。在头文件client.h中声明类,在文件client.cpp中实现...

    水晶报表基本使用方法

    水晶报表的基本使用方法源代码 TableLogOnInfo li = new TableLogOnInfo(); ReportDocument rp = new ReportDocument(); rp.Load(MapPath("Report/CrystalReport.rpt")); li.ConnectionInfo.ServerName = ...

    Instsrv.exe和Srvany.exe

    下面是解决方法。 Windows NT Resource Kit 提供了2个小工具: Instrsrv.exe installs and removes system services from Windows NT. Srvany.exe allows any Windows NT application to run as a service. 1、将...

    修改这项认证设置的. 修改的

    可是怎么都收不到第一封subcription成功的邮件. 怀疑问题出在Exchange上. 经过测试, 两个outlook客户端可以成功的使用这个exchange收发邮件. Exchange独立工作正常, 错误可能出现Exchange与SharePoint的连接上....

    neovim-remote:支持 --remote 和朋友

    通过:echo $NVIM_LISTEN_ADDRESS或:echo v:servername获取它的地址。 或者在启动时指定一个地址: NVIM_LISTEN_ADDRESS=/tmp/nvimsocket nvim 。 nvr将使用$NVIM_LISTEN_ADDRESS或通过--servername提供给它的任何...

    lack-proxy:动态设置进程全局 HTTP 代理

    lack-proxy lack-proxy 可以给程序动态设置全局HTTP代理或根据请求参数设置(建议在程序入口设置)。 安装 ... // headers, // 可选,设置代理请求头 }); 程序里面的所有web请求(HTTP、HTTPS、WebSo

    zuul-ext:Zuul的扩展,支持特殊的ServerName和Port

    调用添加路由方法 void updateOrAddRoute(boolean isSnRoute) { Map&lt;String&gt; stringZuulRouteMap = zuulProperties.getRoutes(); String fromUrl = "/prefix/**"; String toUrl = "http://ip:port/3th/" String...

Global site tag (gtag.js) - Google Analytics