HTTP代理协议 HTTP/1.1的CONNECT方法

  categories:资料  author:

我们平时使用HTTP协议无非就是GET、POST这些方法,但是HTTP的内容远不止那些。今天就来说说HTTP代理使用的CONNECT。这个不是在网页开发上用的,如果没兴趣就跳过吧。

  APACHE只是作为网页的服务器被使用的,不会支持这个方法。如果要使用它必须在服务器上安装相应的软件。这样的软件很多,百度一下HTTP代理服务器就可以找到一大把。
CONNECT这个方法的作用就是把服务器作为跳 板,让服务器代替用户去访问其它网页,之后把数据原原本本的返回给用户。这样用户就可以访问到一些只有服务器上才能访问到的网站了,这就是HTTP代理。 说到代理,我想各位在党的旗帜下成长的同学都不会陌生吧。我们使用的网络被称为天朝局域网,它离Internet还有很长的一段路要走。所以,我们就必须 越过重重坎坷去摸一摸这个世界本来的样子。哎呀,不小心又扯了一下蛋。下面来说说这个CONNECT方法的用法。
CONNECT方法是需要使用TCP直接去连接 的,所以不适合在网页开发中使用,不过网页开发中也用不到这玩意儿。要是使用CONNECT方法,首先要让服务器监听一个端口来接收CONNECT方法的 请求。这个是服务器软件做的事情,我们只要配置好它就可以了,除非你闲着无聊想自己实现一个这样的服务器。在服务器监听了端口以后就是客户端的请求,我们 必须告诉代理服务器我们想要访问哪个Internet服务器。假如我想通过代理访问这个博客(www.web-tinker.com),我就需要建立一个 TCP连接,连接到服务器监听的那个端口,然后给服务器发送一个HTTP头。下面就是这个HTTP头的内容:CONNECT www.web-tinker.com:80 HTTP/1.1
Host: www.web-tinker.com:80
Proxy-Connection: Keep-Alive
Proxy-Authorization: Basic *
Content-Length: 0

   所有的HTTP头都是类似的,第一行是方法名、主要参数、HTTP版本。接着一行一个参数,最后用两个换行来结束。这个HTTP头其实也没什么好介绍 的,唯一一个重点的地方就是星号的部分,这个地方应该填写验证的用户名和密码。而且,用户名和密码也是有固定格式的。要把用户名和密码用冒号连接起来,再 经过BASE64的编码后才可以使用。假如用户名是abc密码是123,那么星号的地方就应该换上YWJjOjEyMw==,也就是abc:123经过 BASE64编码的结果。
发送完这个请求之后,就是服务器端响应请求了。如果用户名和密码验证通过,就会返回一个状态码为200的响应信息。虽然状态码是200,但是这个状态描述不是OK,而是Connection Established。HTTP/1.1 200 Connection Established

  如果用户名和密码验证不通过。会返回一个407的状态码,状态表述是Unauthorized。表示没有权限访问代理服务器。HTTP/1.1 407 Unauthorized

   验证失败的情况有时候还会带上一堆HTML,这是有些服务器为了让网页上在连接失败是显示用的,如果不是通过浏览器来连接的话无视就好了。无论验证成功 还是验证失败,这些服务器返回的信息在不同的服务器软件上会有一些差异。比如有些服务器软件返回这些代码会使用HTTP/1.0,有些则会在后面加上个代 表服务器版本的字段。这些信息都无所谓,对于服务器返回的数据,我们关键是看状态码。… 阅读全文

java servlet监听器种类及介绍

  categories:资料  author:

ServletContextAttributeListener 监听对ServletContext属性的操作,比如增加、删除、修改属性。

ServletContextListener监听ServletContext。
当创建ServletContext时,激发 contextInitialized(ServletContextEvent sce)方法;
当销毁ServletContext时,激发contextDestroyed(ServletContextEvent sce)方法。

ServletContextListener 接口

contextInitialized 初始化方法

contextDestroyed 销毁方法

ServletRequestListener, ServletRequestAttributeListener 接口

Servlet 2.4版在事件监听器中加入了ServletRequest监听器,包括:ServletRequestListener, ServletRequestAttributeListener ,用来管理和控制与ServletRequest动作有关的事件。

对于ServletRequest事件,当request初始化、销毁或者request属性的增加、删除和替换时,事件监听类得到通知。
下表列出了 ServletRequest的事件类型,对应特定事件的监听类必须实现的接口和当事件发生时调用的方法。
事件类型接口方法
request初始化javax.servlet.ServletRequestListenerrequestInitialized()
request销毁javax.servlet.ServletRequestListenerrequestDestroyed()
增加属性javax.servlet.ServletRequestAttributeListenerattributeAdded()
删除属性javax.servlet.ServletRequestAttributeListenerattributeRemoved()
属性被替换
阅读全文

九种浏览器端缓存方法知多少

  categories:资料  author:

  浏览器缓存(Browser Caching)是浏览器端保存数据用于快速读取或避免重复资源请求的优化机制,有效的缓存使用可以避免重复的网络请求和浏览器快速地读取本地数据,整体上加速网页展示给用户。浏览器端缓存的机制种类较多,总体归纳为九种,这里详细分析下这九种缓存机制的原理和使用场景。打开浏览器的调试模式->resources左侧就有浏览器的8种缓存机制。

一、http缓存

http缓存是基于HTTP协议的浏览器文件级缓存机制。即针对文件的重复请求情况下,浏览器可以根据协议头判断从服务器端请求文件还是从本地读取文件,chrome控制台下的Frames即展示的是浏览器的http文件级缓存。以下是浏览器缓存的整个机制流程。主要是针对重复的http请求,在有缓存的情况下判断过程主要分3步:

  • 判断expires,如果未过期,直接读取http缓存文件,不发http请求,否则进入下一步
  • 判断是否含有etag,有则带上if-none-match发送请求,未修改返回304,修改返回200,否则进入下一步
  • 判断是否含有last-modified,有则带上if-modified-since发送请求,无效返回200,有效返回304,否则直接向服务器请求

如果通过etag和last-modified判断,即使返回304有至少有一次http请求,只不过返回的是304的返回内容,而不是文件内容。所以合理设计实现expires参数可以减少较多的浏览器请求。

二、websql

websql这种方式只有较新的chrome浏览器支持,并以一个独立规范形式出现,主要有以下特点

  • Web Sql 数据库API 实际上不是HTML5规范的组成部分;
  • 在HTML5之前就已经存在了,是单独的规范;
  • 它是将数据以数据库的形式存储在客户端,根据需求去读取;
  • 跟Storage的区别是: Storage和Cookie都是以键值对的形式存在的;
  • Web Sql 更方便于检索,允许sql语句查询;
  • 让浏览器实现小型数据库存储功能;
  • 这个数据库是集成在浏览器里面的,目前主流浏览器基本都已支持;

websql API主要包含三个核心方法:

  • openDatabase : 这个方法使用现有数据库或创建新数据库创建数据库对象。
  • transaction : 这个方法允许我们根据情况控制事务提交或回滚。
  • executeSql : 这个方法用于执行真实的SQL查询。

openDatabase方法可以打开已经存在的数据库,不存在则创建

    var db = openDatabase('mydatabase', '2.0', 
阅读全文

在windows XP下搭建nexus本地仓库

  categories:资料  author:
一、搭建nexus服务器
1.下载nexus安装包
下载地址为:http://www.sonatype.org/nexus/go, 我下载的是nexus-2.1.2-bundle.zip
2.安装并启动nexus服务
将下载 下来的nexus-2.1.2-bundle.zip解压到将要安装的目录,进入安装目录,找到windows-x86-32文件夹,我的在 D:\Software\nexus-2.1.2-bundle\nexus-2.1.2\bin\jsw\windows-x86-32,此时可以看到 该文件夹下面有如下内容:

其中

console-nexus.bat表示以控制台的方式启动nexus服务(可以看到输出日志)

install-nexus.bat表示安装nexus服务

nexus.bat表示启动nexux应用程序

start-nexus.bat表示启动nexus服务

stop-nexus.bat表示停止nexus服务

uninstall-nexus.bat表示卸载nexus服务

如果直接用nexus.bat会提示nexus的用法:start,stop,restart, install, uninstall
启动命令

方法1:nexus.bat start

方法2: install-nexus.bat(如果没有安装nexus则需要执行这个命令)  start-nexus.bat

方法3:console-nexus.bat,可以直接启动(这里将不进行演示说明)

这样nexus服务就启动了,在浏览器中输入http://localhost:8081/nexus,则可以进入nexus的欢迎页面,如下:

二、配置nexus
由于在新搭建的nexus环境中只是一个空仓库,所以我们需要将它和远程的maven中心仓库进行同步。

完成上述步骤后(如果需要设置代理,请参考后面的设置代理部分),就可以更新仓库的索引了:

在更新完仓库的索引之后就可以进行搜索需要的jar包了

另:为仓库设置全局代理

这样整个仓库就配置成功了,剩下的就是在项目中的具体应用了。上述描述如有不当之处,欢迎大家拍砖

本文写作时参考了:http://www.360doc.com/content/11/0914/09/1108510_148089556.shtml

阅读全文

selenium2/webdriver启动各种浏览器的方法

  categories:资料  author:

转载地址:http://www.cnblogs.com/puresoul/p/4251536.html

本文主要记录下在使用selenium2/webdriver时启动各种浏览器的方法、以及如何加载插件、定制浏览器信息(设置profile)等

环境搭建可参考我的另一篇文章:http://www.cnblogs.com/puresoul/p/3483055.html

一、Driver下载地址

http://docs.seleniumhq.org/download/

二、启动firefox浏览器(不需要下载驱动,原生支持)

1、firefox安装在默认路径下:

1     //启动默认安装路径下的ff
2     public void StartFireFoxByDefault(){
3         System.out.println("start firefox browser...");
4         WebDriver driver = new FirefoxDriver();      //直接new一个FirefoxDriver即可
5         Navigation navigation = driver.navigate();
6         navigation.to("http://www.baidu.com/");
7         System.out.println("start firefox browser succeed...");        
8     }
阅读全文

LDAP服务器的概念和原理简单介绍

  categories:java资料  author:

1. 目录服务

目录是一个为查询、浏览和搜索而优化的专业分布式数据库,它呈树状结构组织数据,就好象Linux/Unix系统中的文件目录一样。目录数据库和关系数据库不同,它有优异的读性能,但写性能差,并且没有事务处理、回滚等复杂功能,不适于存储修改频繁的数据。所以目录天生是用来查询的,就好象它的名字一样。

目录服务是由目录数据库和一套访问协议组成的系统。类似以下的信息适合储存在目录中:

  • 企业员工信息,如姓名、电话、邮箱等;
  • 公用证书和安全密钥;
  • 公司的物理设备信息,如服务器,它的IP地址、存放位置、厂商、购买时间等;

LDAP是轻量目录访问协议(Lightweight Directory Access Protocol)的缩写,LDAP是从X.500目录访问协议的基础上发展过来的,目前的版本是v3.0。与LDAP一样提供类似的目录服务软件还有ApacheDS、Active Directory、Red Hat Directory Service 。

2. LDAP特点

  • LDAP的结构用树来表示,而不是用表格。正因为这样,就不能用SQL语句了
  • LDAP可以很快地得到查询结果,不过在写方面,就慢得多
  • LDAP提供了静态数据的快速查询方式
  • Client/server模型,Server 用于存储数据,Client提供操作目录信息树的工具
  • 这些工具可以将数据库的内容以文本格式(LDAP 数据交换格式,LDIF)呈现在您的面前
  • LDAP是一种开放Internet标准,LDAP协议是跨平台的Interent协议

3. LDAP组织数据的方式

4. 基本概念

在浏览LDAP相关文档时经常会遇见一些概念,下面是常见概念的简单解释。

4.1 Entry

条目,也叫记录项,是LDAP中最基本的颗粒,就像字典中的词条,或者是数据库中的记录。通常对LDAP的添加、删除、更改、检索都是以条目为基本对象的。

dn:每一个条目都有一个唯一的标识名(distinguished Name ,DN),如上图中一个 dn:”cn=baby,ou=marketing,ou=people,dc=mydomain,dc=org” 。通过DN的层次型语法结构,可以方便地表示出条目在LDAP树中的位置,通常用于检索。

阅读全文

Eclipse进行远程调试linux 环境的tomcat配置 更新maven web项目

  categories:资料  author:

Eclipse进行远程调试linux 环境的tomcat配置 更新maven web项目

平常我们都是用windows开发,但是有时候需要将tomcat部署到linux下 去运行,比如执行shell脚本。这个时候我们就需要在linux环境下进行调试。我们可以利用myeclipse的远程调试功能,来进行操作。– 远程调试tomcat的配置,也可以是其他的web应用服务器,但是配置是不一样的。

情况分类:

1、tomcat在window下。

打开%CATALINE_HOME%/bin下的文件catalina.bat,加入下面这行: 
set CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9999
其中address=8787是没被使用的端口号。连接方式有两种,为dt_shmem和dt_socket,分别表示本机调试和远程调试。 

2、tomcat在linxu下。

      在tomcat的catalina.sh文件的正文的第一行添加: 

declare -x CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9999" 

配置完成tomcat之后,启动tomcat(正常启动方式),可以查看监听端口是否已经监听。

[root@UC100C ~]# netstat -antp | grep 9999
tcp        0  

阅读全文

基于docker registry的私服安装简介

  categories:资料  author:

基于docker registry的私服安装简介

1. Docker 私服简介

官方提供了Docker Hub网站来作为一个公开的集中仓库。然而,本地访问Docker Hub速度往往很慢,并且很多时候我们需要一个本地的私有仓库只供网内使用。

Docker仓库实际上提供两方面的功能,一个是镜像管理,一个是认证。前者主要由docker-registry项目来实现,通过http服务来上传下载;后者可以通过docker-index(闭源)项目或者利用现成认证方案(如nginx)实现http请求管理。    

docker registry 就是管理 docker 镜像的服务, Docker 公司维护的 registry 就是 http://hub.docker.com ,它可以让我们方便的下载预先做好的镜像。

$ docker pull ubuntu 

上面的命令就是缺省的从这个Docker官方源下载。在国内为了加快访问,你也可以使用 docker.cn 的服务,他们同步了常用的镜像,使用也非常方便,如:

$ docker pull docker.cn/docker/ubuntu 

大部分公司在推广使用 docker 时,都会为了使用方便,在公司内部自己架设一个,不仅仅是为了安全、节省大量的带宽,而且也可以有效推动内部对docker的有效利用,如下图:

Docker公司的 docker registry也是开源的,我们可以很容易的架设自己的私有docker registry

docker-registry既然也是软件应用,自然最简单的方法就是使用官方提供的已经部署好的镜像registry。官方文档中也给出了建议,直接运行sudo docker run

阅读全文


快乐成长 每天进步一点点