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

    这里写图片描述

  • 相关阅读:
    html实现时间输入框
    使用textarea标签代替input标签可以实现输入框的大小调节,自动换行,滚动条显示
    requests模块的使用
    抓包工具Fiddler使用教程
    git 使用merge 对本地分支进行合并 并进行代码提交的流程
    js常用方法汇总
    js对象排序
    原生javasxript获取浏览器的滚动距离和可视窗口的高度
    深度对象拷贝
    curl扩展代码
  • 原文地址:https://www.cnblogs.com/whzhaochao/p/5023402.html
Copyright © 2011-2022 走看看