Tomcat配置虚拟主机后的登录验证码问题
先描述一下问题现象,在本地测试运行一个java web网站,一切正常。但把网站部署到Linux服务器上后,发现登录出了问题,提示验证码输入不正确。登录时需要输入验证码,而验证码的原值是先存入session中的,然后点击【登录】后,会对比用户输入的验证码与原值,可此时查看日志发现,从session获取验证码为null。
起先本人惯性地认为是代码的问题,可换了几种写法之后,仍然存在这种现象,仔细想了下服务器与本地环境的差异,锁定了一个点,服务器的域名跟本地是不同的,服务器上的tomcat设置了虚拟主机,并使用nginx做了域名的反向代理。这里假设项目为siteExample,那么在本地运行时,url为“hettp://localhost:8080/siteExample”,在Linux服务器上,为了构造友好的网址,变为了“http://www.example.com”。
服务器上,指定了/www/apps为tomcat的项目发布目录。而在tomcat的server.xml文件中,关于虚拟主机的配置如下:
<Host appBase="/www/apps" autoDeploy="true" name="www.example.com" unpackWARs="true">
<Context docBase="/www/apps/siteExample" path="" />
</Host>
上面的配置中,Context元素的path属性之所以设为“”,是为了去除url中的项目名称,这样url就可以写为“http://www.example.com:8080”,然后再利用nginx的反向代理,去除url中的端口号即可。
考虑到域名的差异,我又仔细地查看了登录发送的请求,找了原因。在jsp页面里,我们写的资源包括链接的地址都应该是相对于当前url的地址,可前端人员在登录时发送的请求url写死了,写成了“/siteExample/login.do”,很显然在服务器上运行时,请求的绝对url为“http://www.example.com/siteExample/login.do”,而最终正确的url应该为“http://www.example.com/login.do”。验证码的原值存在了“http://www.example.com”的会话session中,而登录请求时,获取到的会话session是“http://www.example.com/siteExample”的,自然获取不到验证码的原值了。
可以看出,两个不同的域名,指向了相同物理位置的web项目,但产生的是两个不同的session会话。有兴趣的话可以研究下tomcat的运行原理。
Tomcat配置虚拟主机后的登录验证码问题的更多相关文章
- apache配置虚拟主机后,启动速度慢
apache配置虚拟主机后,启动速度慢且提示“the requested operation has failed” 可以通过在cmd下启动,来查找问题(命令中的“apache2.2”,是服务名,根据 ...
- tomcat配置虚拟主机
在眼下,非常多server都是一台server对外能够訪问非常多个javaEE的项目,这样的实现方式就须要在tomcat里面配置虚拟主机了!以下就说说怎样配置虚拟主机: 找到tomcat的安装文件夹, ...
- Apache配置虚拟主机后让其他电脑访问
关于Apache配置虚拟主机后在局域网中让其他电脑访问 #test1# NameVirtualHost *:80 ServerName www.t1.com Document ...
- Linux配置虚拟主机后,只能访问到主页怎么办?
Linux配置虚拟主机后,只能访问到主页怎么办? 今天配置了lamp后,添加了一个虚拟主机,配置http.conf后,增加虚拟主机,测试访问发现只有域名下能访问,ljt.com但是域名下所有的都访问不 ...
- centos5.5用phpstudy一键安装配置虚拟主机后,yum配置代理服务器squid
最近因为工作需要,开发站点需要在lamp环境下跑网站,于是在win7上跑虚拟机装了一个centos5.5的linux 并用集成环境配置了一个lamp环境,这里用的是phpstudy的一键安装包,并配置 ...
- Tomcat配置虚拟主机、tomcat的日志
1.配置Tomcat的虚拟主机修改:vim /usr/local/tomcat9/conf/server.xml 添加一个虚拟主机:加入: <Host name="www.tomcat ...
- Apache配置虚拟主机后,不能访问localhost的问题
今天想试用一下php7,但是发现php7只支持Apache2.4版本,而我电脑上的Apache是2.2版本,为了想尝鲜,就必须去下载新的Apache2.4 php7和apache2.4安装整合以后,l ...
- Tomcat配置虚拟主机的两种方式
1.基于主机名的虚拟主机配置 在随意盘符下建立一个目录作为虚拟地址的目录.例如:F:\virtualhost1,在其下建立 test1.html,写入内容例如:test 在tomcat/conf/se ...
- win10 apache配置虚拟主机后localhost无法使用
win10系统配置虚拟主机1.用记事本或Sublime Text打开httpd.confctrl + f 搜索httpd-vhosts.conf 将#Include conf/extra/httpd- ...
随机推荐
- C Primer Plus(第五版)3
第三章 数据和 C 在本章中你将学习下列内容: 1. 关键字: int, short, long, unsigned, char, float, double, _Bool, _Complex, _I ...
- Sqoop实现自定义job的增量导入
需求:redis缓存的数据隔段时间往MySQL中写入一次.如果按照job的增量导入,比如上次redis向mysql导入数据时间为8:00,下一次导入时间为9:00,8:20sqoop进行增量导入,导入 ...
- Java GUI 画点
import java.awt.EventQueue; public class Paint { private JFrame frame; /** * Launch the application. ...
- 【转】WEB测试到移动测试的转换
移动互联网的发展毋庸置疑是必然的趋势,我们曾经传统WEB互联网测试的同学,也必然走上移动测试的道路,移动测试与pc测试到底需要怎样的思维转变才能更快的进入移动节奏呢?对比下WEB与移动的测试不同点: ...
- Win2D 官方文章系列翻译 - DPI (每英寸点数)和 DIPs(设备独立像素)
本文为个人博客备份文章,原文地址: http://validvoid.net/win2d-dpi-dips/ 本文旨在解释物理像素与设备独立像素(DIPs, device independent pi ...
- 【测试】通过RMAN联机全库备份,包括控制文件,归档日志文件,备份成功后,删除已备份的归档日志。
RMAN是一个很方便很好用的备份,恢复,还原的一个工具,做这个小测试其实只有一个RMAN语句就完全解决了这么大的需求: RMAN> backup as backupset full databa ...
- 合并同一目录下多个EXCEL的多个sheet
合并同一目录下多个EXCEL的多个sheet到一个excel的一个sheet 1.把多个excel表都放在同一个文件夹里面,并在这个文件夹里面新建一个excel2.打开新建的excel表,并右键单击s ...
- 洛谷P2722 总分 Score Inflation
P2722 总分 Score Inflation 184通过 295提交 题目提供者该用户不存在 标签USACO 难度普及- 提交 讨论 题解 最新讨论 关于算法 题目背景 学生在我们USACO的 ...
- php odbc连接 查询显示不完整问题
首先php.ini里里面mssql查询的默认配置是4096 1.找到[MSSQL] ; Valid range 0 - 2147483647. Default = 4096.mssql.textlim ...
- oracle中,行转列函数wm_concat()结果有长度限制,重写该函数解决
--Type CREATE OR REPLACE TYPE zh_concat_im AUTHID CURRENT_USER AS OBJECT ( CURR_STR clob, STATIC FUN ...