zoukankan      html  css  js  c++  java
  • 跨域读写Cookie

    原文链接

    Cookie作用域

    Cookie 在二级域名下是可以共享的,如www.a.com 和m.a.com 他们的Cookie 是可以共享的,这也是很多单点登录利用Cookie实现的原理,但是很多站点不是二级域名的如www.taobao.com和www.tmall.com,它们是完成两个不同的域名,那么完全不同的域名可以共享Cookie吗?答案是可以的,我们看一下实现思路。

    跨域写Cookie

    跨域写Cookie 的原理主要是利用html中的 《script>标签可以跨域获来实现的
    现有a.com 和b.com 两个站点,可以通过Hosts文件配置,如下图所示

    这里写图片描述

    在b.com 中建立一个serlvet 负责写Cookie ,代码 如下:

    @WebServlet("/SetCookie")
    public class SetCookie extends HttpServlet {
        private static final long serialVersionUID = 1L;
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            String cookieName=request.getParameter("cookieName");
            String cookieValue=request.getParameter("cookieValue");
            response.addCookie(new Cookie(cookieName, cookieValue));
            response.getWriter().append("add Cookie");
        }
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    }

    该Serlvet的访问地址为:http://b.com/ClientB/SetCookie?cookieName=userId&cookieValue=123458787456 主要作用就是获取请求中的cookieName和cookieValue 然后写到b.com中

    在a.com 中添加一个index.html 页面,页面中代码 如下:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    <script type="text/javascript"  src="http://b.com/ClientB/SetCookie?cookieName=userId&cookieValue=123458787456"/>
    </head>
    <body>
    hello 
    </body>
    </html>

    这段代码主要是通过 《script》 标签访问b.com中的写Cookie接口,从而将Cookie 写到b.com中

    测试

    访问:http://a.com/ClientA/

    这里写图片描述
    查看b.com Cookie

    这里写图片描述

    跨域读Cookie

    跨域读Cookie 主要利用《iframe》标签可以跨域的特性完成的。

    1. b.com 下有一个2.html 内容如下:
    <html>
    <head>
    </head>
    <body>
    <script>
    window.location="http://a.com/ClientA/3.html?"+document.cookie;
    </script>
    </body>
    </html>

    这段代码主要是将b.com下的所有cookie通过url参数方式跳转到a.com下的3.html

    1. a.com下有 1.html 内容如下:
    <html>
    <head>
    </head>
    <body>
        <iframe src='http://b.com/ClientB/2.html' width='100' height='100'> </iframe>
        <textarea id="zhaochao">
        </textarea>
    </body>
    </html>

    这段代码主要作用是通过一个《iframe》标签访问b.com下的2.html

    1. a.com下有3.html 内容如下:
    <html>
    <head>
    </head>
    <body>
    <script>
    window.parent.document.getElementById("zhaochao").value=window.location.toString().substring(window.location.toString().indexOf("?"));
    </script>
    </body>
    </html>

    这段代码主要是将b.com下的2.html中的url参数写到 1.html中textarea中
    防问http://a.com/ClientA/1.html 获取b.com下的所有Cookie

    这里写图片描述

  • 相关阅读:
    实现USB即插即用 教您怎么取消安全删除硬件功能
    如何用EFS对脱机文件加密
    快速美化封面用word就可以
    给iPhone联系人设置小头像的两种方法
    文件夹加密巧用“类标识符”
    保存网页FLASH有妙招
    使用EFS对你电脑上的脱机文件加密
    虚拟xp系统如何在win7系统中安装
    医药圈 www.eyaoq.com
    《eyaoq.com医药圈医药人自己的社区邀请函》
  • 原文地址:https://www.cnblogs.com/whzhaochao/p/5023402.html
Copyright © 2011-2022 走看看