0
这篇文章的由来
继上一篇文章中介绍了Jmeter cookie manager的两种常用使用情况:
同一线程组和不同线程组间传递cookie;
前些天在工作中又遇到了cookie的跨域使用问题,调试了好久才调好,查了很多资料,从cookie的实现原理到SSO单点登录到SSO实现方式,再到session、token,到OAuth认证.....
原本想综合起来写一篇详细的文章,讲一下这一块知识整个的来龙去脉,但是修改了好几次发现暂时还不能描述清楚每一个细节,所以纠结了好久、修修改改还是没完成。
反思了一下,是我太贪多了,太追求完美了,想把大量的知识点在一篇文章中讲完,但是自己还没有储备足够多的知识量,即使能长篇大幅的写出来,相信大家也不愿意看一篇臭长臭长的文章的,所以凡事要慢慢来,一步一个脚印,循序渐进。
所以,今天先从最初遇到的问题说起,后面再逐步完善和扩展。
一、cookie跨域问题背景
问题是这样的,在上一篇文章中提到了跨线程组传递cookie,实现方法是:
调用JMeterUtils类中setProperty和getProperty方法,
在生成cookie的线程组中把cookie保存在全局变量中,
然后在需要使用cookie的另一个线程组中取出全局变量的值,
从而实现了cookie的跨线程组传递。
但是
跨线程组就是跨域吗?
到底什么是跨域传递呢?
怎么实现cookie的跨域传递呢?
其实实现方法跟上一篇是类似的,只是有些细节涉及到很多方面,非常容易踩坑.....
二、cookie机制
首先,我们要深入了解一下cookie机制。
Cookie机制主要是为了弥补HTTP(1.0)协议无状态特点的不足。
1、HTTP协议特点
目前绝大部分的Web应用都是基于HTTP(超文本传输协议),它的特点是简单快速、使用灵活、无连接、无状态。
其中无状态是指http协议对于事务处理没有记忆能力,在数据交换完毕后,服务器端和客户端的链接就会关闭,每次交换数据都需要建立新的链接。
这意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大,但是在服务器不需要先前信息的情况下它的应答就较快。
但是在很多情况下我们希望用到前面请求的数据,比如你登录邮箱,登录一个页面,我们经常会在此时设置30天内记住我,或者自动登录选项,那么这种情况下是怎么记录信息的呢?
就是用cookie来保存</