酷米网(kmw.com),专注高端域名快速交易!

  1. 当前位置: 
  2. 首页 > 
  3. 域名资讯  > Cookie的路径和域
服务器时间:2018-04-22 12:27:46 (CST +08:00)

Cookie的路径和域

2017-12-17 17:09:11     浏览量: 22

—高级软件人才实作培训专家!

Cookie 的路径和域

1. Cookie 路径介绍

我们知道Cookie 的属性有很多,其中有一个属性是路径。有些人认为Cookie 的路径指的是Cookie 在客户端的保存路径,其实并不是。

Cookie 的路径是在服务器创建Cookie 时设置的,它的作用是决定浏览器访问服务器的某个资源时,需要将浏览器端保存的那些Cookie 归还给服务器。如图1-1

所示:

图1-1cookie 路径

图1-1中,浏览器端保存的Cookie 有三个,分别是Cookie1、Cookie2和Cookie3。它们三个的访问路径分别为:“/Example/cookie“、”/Example/“、”Example1/cookie“。浏览器访问服务器端的路径为:”http://localhost:8080/Example/cookie/a/index.jsp“。也就是说index.jsp 页面的访问路径为:”/Example/cookie/a/“,该路径包含了Cookie1和Cookie2的路径,因此在访问index.jsp 时,浏览器会将Cookie1和Cookie2发送给服务器。这就是Cookie 的路径的作用,其中涉及到访问路径。

如果服务器创建Cookie 时没有设置路径,那么该Cookie 的路径是当前资源的访问路径。例如:在index.jsp 页面中创建了一个Cookie ,index.jsp 页面的访问路径为“/Example/“,那么该Cookie 的路径就是”/Example/“。如果服务器创建Cookie 时设置了路径,那么Cookie 的路径就是设置的路径,例如:cookie.setPath(“/Example/cookie”),那么该Cookie 的路径就是”/Example/cookie“。

2. Cookie 路径练习

通过上面对Cookie 路径的介绍,我们对它有了一定的了解,现在通过一个案例来验证以上结论。具体步骤如下:

(1)创建一个web 应用,Example20,在该应用下的WebRoot 目录下新建一个目录cookie ,并在该目录下新建一个jsp 文件,名称为one.jsp ,主要代码如例1-1所示:

例1-1one.jsp

<

Cookie cookie=newCookie("one","hello");

response.addCookie(cookie);

>

,

—高级软件人才实作培训专家!

例1-1中,服务器创建cookie 但是并没有设置其路径,那么该cookie 的路径应为one.jsp 的访问路径。

(2)将Example20发布到服务器,然后启动服务器,在谷歌浏览器端地址栏上输入:http://localhost:8080/Example20/cookie/one.jsp,然后查看cookie 信息,如图1-2

所示:

图1-2cookie 信息

由图1-2可知,cookie 的路径是:“/Example20/cookie“,该路径正是one.jsp 页面的访问路径。

(3)在WebRoot 目录下的cookie 目录中新建一个jsp 文件,名称为two.jsp ,主要代码如例1-2所示:例1-2two.jsp

<

Cookie[]cookies=request.getCookies();

if(cookies!=null){

for(Cookiec:cookies){

out.print(c.getName() "=" c.getValue() "
");

}

}

>

(4)重新启动服务器,在浏览器端地址栏上输入:http://localhost:8080/Example20/cookie/two.jsp,并使用浏览器的开发者工具,查看请求信息中的cookie ,如图1-3所示:

,

—高级软件人才实作培训专家

!

图1-3请求信息

由图1-3可知,在访问two.jsp 页面时,浏览器将名称为one 和JSESSIONID 的cookie 归还给服务器。因为two.jsp 页面的访问路径也是“/Example20/cookie”。JSESSIONID 能够发送过来是因为它的路径是“/Example20/”,也包含在访问路径中,因此被浏览器发送过来。

(5)在浏览器端访问Example20工程的index.jsp 页面,访问路径为:http://localhost:8080/Example20,使用开发者工具查看请求信息,观察名称为one 的cookie 是否在请求信息中,如图1-4

所示:

图1-4请求信息

由图1-4可知,访问index.jsp 页面时,浏览器只将名称为JSESSIONID 的cookie 发送给服务器,而名称为one 的cookie 并没有发送服务器,原因是index.jsp 页面的访问路径是“/Example20/”,而one 的访问路径是“/Example20/cookie”,index.jsp 页面的访问路径并不包含one 的路径。

需要注意的是,大家不要将包含的关系弄混淆了,是访问路径包含cookie 的路径。例如,浏览器中保存如下几个cookie ,它们的路径分别是:

aCookie.path=/Example20/;bCookie.path=/Example20/jsps/;cCookie.path=/Example20/jsps/cookie●访问路径是:http://localhost:8080/Example20/index.jsp

浏览器发送给服务器的cookie 有:aCookie ;

●访问路径是:http://localhost:8080/Example20/jsps/a.jsp

浏览器发送给服务器的cookie 有:aCookie ,bCookie ;

●访问路径是:http://localhost:8080/Example20/jsps/cookie/b.jsp

,

—高级软件人才实作培训专家!

浏览器发送给服务器的cookie 有:aCookie ,bCookie ,cCookie 。

3. Cookie 的域

Cookie 还有一个属性就是域,Cookie 类中有设置和获取cookie 域的方法,如下所示:●V oid setDomain(Stringpattern) :设置cookie 的域;

●String getDomain():获取cookie 的域,返回值的类型是String 类型。

其中Domain 单词就有域名的意思。一般我们很少使用cookie 的域,只有在多个二级域共享Cookie 时才用。例如:www.baidu.com 、zhidao.baidu.com 、news.baidu.com 、tieba.baidu.com 这些域可以理解是百度的子项目,现在要在这些域中共享cookie ,就需要使用cookie 的域,使用时需要注意以下两点:

●设置domain 为:setDomain(".baidu.com”);

●设置path 为:setPath(“/”)。

我们如果要自己设置Cookie 的域,需要在电脑上配置虚拟主机,下面大家按照以下的步骤操作,如下:

(1)在C:WINDOWSsystem32driversetchosts文件中添加如下内容:

127.0.0.1news.qdmmy6.com

127.0.0.1tieba.qdmmy6.com

这两个域名后面两个单词要一致,如:qdmmy6.com 。(2)在Tomcat 的安装目录下的

/conf/server.xml文件中添加如下配置:

unpackWARs="true"autoDeploy="true">

prefix="localhost_access_log."suffix=".txt"

pattern="hlut"r"sb"/>

unpackWARs="true"autoDeploy="true">

prefix="localhost_access_log."suffix=".txt"

pattern="hlut"r"sb"/>

(3)点击此处下载news.zip tieba.zip 资源,将它们解压后拷贝到Tomcat 的安装目录下。

(4)启动Tomcat 服务器,在浏览器端访问:http://news.qdmmy6.com/SaveServlet.使用HttpWatch 或者其他开发者工具查看请求响应信息,观察cookie 的信息。

(5)在浏览器端访问:http://tieba.qdmmy6.com/GetServle,使用HttpWatch 或者其他开发者工具查看请求响应信息,观察cookie 的信息。