改变Resin-2.1.17返回的server版本信息
来源:互联网 发布:广告软件 编辑:程序博客网 时间:2024/05/16 17:58
这个问题头疼很久了,怎么搜索都搜不到答案,论坛和QQ群问也没人知道。
艹!!!!!!!!!!!!!!!!!!!!!!!!!
网上偶尔几个关于这方面的问题的都是讲resin3及以后的,2和配置文件与3格式完全不同,根本套用不上。
艹!!!!!!!!!!!!!!!!!!!!!!!!!
网上搜了个2.1.17版本的安装包,测试了好多次也没搞定。今天下狠心翻翻安装包里的源码 。经过检索后,在response.c里找到了一个设置http头部属性的方法,然后从这里上溯,在jni_vfs.c里找到了下面一行:
jniClass = (*env)->FindClass(env, "com/caucho/server/http/JniStream");
很明显,这里必然存在一个JniStream.class文件。然后在resin文件夹下的lib中翻了翻,在resin.jar里找到了这个文件。反编译了出来,然后又上溯上溯...,终于在HttpResponse找到了相关的设置。大概看了看代码,比较蛋疼的是,在发送请求前,它会检查头部是不是存在server,如果不存在,就把它的resinServerBytes属性添加上去。它的resinServerBytes属性定义是这样的:
static byte[] resinServerBytes = ("\r\nServer: Resin/" + Version.VERSION).getBytes();
Version.VERSION是一个常量,它的定义是:
public static String VERSION = "2.1.17";
问题就在这了。
艹!!!!!!!!!!!!!!!!!!!!!!!!!
我的想法是,改变一下 resinServerBytes 的定义,不显示Resin字段就好,然后就随便改了个test001之类的(方法参考的http://blog.csdn.net/hexin373/article/details/6669813)。改完覆盖到jar包里,替换掉resin服务器目录下的resin.jar后,发现浏览器中看到的server信息的确不见了,但test001字段也没显示出来。原因是忘记加回车符了,用curl命令可以看到test001。
艹!!!!!!!!!!!!!!!!!!!!!!!!!
网上偶尔几个关于这方面的问题的都是讲resin3及以后的,2和配置文件与3格式完全不同,根本套用不上。
艹!!!!!!!!!!!!!!!!!!!!!!!!!
网上搜了个2.1.17版本的安装包,测试了好多次也没搞定。今天下狠心翻翻安装包里的源码 。经过检索后,在response.c里找到了一个设置http头部属性的方法,然后从这里上溯,在jni_vfs.c里找到了下面一行:
jniClass = (*env)->FindClass(env, "com/caucho/server/http/JniStream");
很明显,这里必然存在一个JniStream.class文件。然后在resin文件夹下的lib中翻了翻,在resin.jar里找到了这个文件。反编译了出来,然后又上溯上溯...,终于在HttpResponse找到了相关的设置。大概看了看代码,比较蛋疼的是,在发送请求前,它会检查头部是不是存在server,如果不存在,就把它的resinServerBytes属性添加上去。它的resinServerBytes属性定义是这样的:
static byte[] resinServerBytes = ("\r\nServer: Resin/" + Version.VERSION).getBytes();
Version.VERSION是一个常量,它的定义是:
public static String VERSION = "2.1.17";
问题就在这了。
艹!!!!!!!!!!!!!!!!!!!!!!!!!
我的想法是,改变一下 resinServerBytes 的定义,不显示Resin字段就好,然后就随便改了个test001之类的(方法参考的http://blog.csdn.net/hexin373/article/details/6669813)。改完覆盖到jar包里,替换掉resin服务器目录下的resin.jar后,发现浏览器中看到的server信息的确不见了,但test001字段也没显示出来。原因是忘记加回车符了,用curl命令可以看到test001。
我想要不就这样处理吧,实在是受够了鸟。
--------------------------------------------------------------------------------2014/2/13--------------------------------------------------------------------
今天想完善下昨天的问题,采用在构造函数中更改resinServerBytes值为空值的方法来解决,用javassist重新修改下,代码如下。
package main;import java.io.IOException;import javassist.CannotCompileException;import javassist.ClassPool;import javassist.CtClass;import javassist.NotFoundException;public class AsistentMain {public static void main(String[] args) throws NotFoundException, CannotCompileException, IOException {ClassPool cp = ClassPool.getDefault();cp.insertClassPath("C:\\Users\\Simon\\Desktop");// 获得类文件名CtClass cc = cp.get("com.caucho.server.http.HttpResponse");javassist.CtConstructor cc2=cc.getDeclaredConstructors()[0];cc2.insertAfter("resinServerBytes=(\"\").getBytes();");cc.writeFile("C:\\Users\\Simon\\Desktop");}}
0 0
- 改变Resin-2.1.17返回的server版本信息
- 返回Winsock的版本信息
- resin的配置信息
- Transact-SQL 参考 返回并允许要查询的 Microsoft® SQL Server™ 版本信息
- 获取SQL Server的版本信息
- 获取SQL Server的版本信息
- sql server 版本信息
- resin与hessian的版本冲突问题
- 以下示例显示返回当前安装的版本信息。
- SQL Server版本信息查询
- 查看SQL SERVER 版本信息
- 查询本地SQL Server服务器的版本信息
- 关于SQL Server 2000版本信息的查询
- SQL语句查看SQL Server的版本信息
- 查找SQL Server 版本相关信息的好网站
- Nginx隐藏响应头信息的Server信息和版本信息
- 改变 Office 的版本
- windows下面apache和resin各版本、IIS的组合
- proguard.cfg 系统找不到指定的文件
- lua function
- 360或720
- lua advanced function
- “移动医疗”四大入口,一条纵贯线和商业模式
- 改变Resin-2.1.17返回的server版本信息
- vim自动对齐
- launch failed binary not found---eclipse c++ linux
- Python学习笔记:01 环境搭建和“Hello World!”
- java学习笔记 access modifier 访问修饰符作用
- 《STL源码剖析》—— stl_config.h
- 还原数据库时数据库被占用导致的还原失败解决方案
- 五指山nefu84
- 【离散化】poj1083 Moving Tables