CN113746941B - 解除限制第三方cookie的方法、设备及存储介质 - Google Patents

解除限制第三方cookie的方法、设备及存储介质 Download PDF

Info

Publication number
CN113746941B
CN113746941B CN202111296947.8A CN202111296947A CN113746941B CN 113746941 B CN113746941 B CN 113746941B CN 202111296947 A CN202111296947 A CN 202111296947A CN 113746941 B CN113746941 B CN 113746941B
Authority
CN
China
Prior art keywords
domain name
party
openness
reverse proxy
proxy server
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202111296947.8A
Other languages
English (en)
Other versions
CN113746941A (zh
Inventor
廖炳为
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Mingyuanyun Procurement Technology Co ltd
Original Assignee
Shenzhen Mingyuanyun Procurement Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Mingyuanyun Procurement Technology Co ltd filed Critical Shenzhen Mingyuanyun Procurement Technology Co ltd
Priority to CN202111296947.8A priority Critical patent/CN113746941B/zh
Publication of CN113746941A publication Critical patent/CN113746941A/zh
Application granted granted Critical
Publication of CN113746941B publication Critical patent/CN113746941B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5682Policies or rules for updating, deleting or replacing the stored data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/168Implementing security features at a particular protocol layer above the transport layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/146Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明公开了一种解除限制第三方cookie的方法、设备及计算机可读存储介质,所述方法为:搭建代理服务器,配置与待访问的主站域名的根域名一致的反向代理域名,并将所述反向代理域名解析并绑定到所述代理服务器上;当所述代理服务器接收到对所述主站域名的访问后,自动跳转到对应的所述反向代理域名,截取所述反向代理域名中的业务参数,并根据访问所述主站域名的网页请求的消息首部,动态设置samesite属性到网页响应的消息首部上;根据所述业务参数查询所述代理服务器的数据库,确定并跳转到所述业务参数对应的第三方域名,返回所述第三方域名的数据作为响应。从而达到解除浏览器对于第三方cookie的限制。

Description

解除限制第三方cookie的方法、设备及存储介质
技术领域
本发明涉及计算机网络通信领域,尤其涉及一种解除限制第三方cookie的方法、设备及计算机可读存储介质。
背景技术
随着互联网产品发展日新月异,越来越多的产品集成了许多第三方系统,其中有部分系统的用户认证是基于cookie的方式。此方式在chrome 7.0版本以上,已经做了验证限制,不允许在同一个站点中第三方cookie的存在。这样会导致集成登录态失败,影响集成业务,从而无法通过最优化的综合统筹设计达到整体优化的目的,从而无法发挥整体效益。
目前市面上解决的方案,一种是将cookie方式换成基于无状态的token临时令牌方式,但此方案需要依赖于第三方系统支持,改造成本巨大。另外一种是本身集成系统改造,在代码层面实现设置samesite属性,但其对原先系统侵入性大。
发明内容
本发明的主要目的在于提供一种解除限制第三方cookie的方法,旨在解决现有技术中解除浏览器限制第三方cookie成本大、侵入性大的技术问题。
为实现上述目的,本发明提供一种解除限制第三方cookie的方法,所述解除限制第三方cookie的方法包括:
搭建openresty代理服务器,配置与待访问的主站域名的根域名一致的反向代理域名,并将所述反向代理域名解析并绑定到所述openresty代理服务器上;
当所述openresty代理服务器接收到对所述主站域名的访问后,自动跳转到所述反向代理域名,截取所述反向代理域名中的业务参数,并根据访问所述主站域名的HTTP请求的消息首部,动态设置samesite属性到HTTP响应的消息首部上;
根据所述业务参数查询所述openresty代理服务器的数据库,确定并跳转到所述业务参数对应的第三方域名,使所述第三方域名的服务器设置第三方cookie。
可选地,所述将所述反向代理域名解析并绑定到所述openresty代理服务器上的步骤,还包括:
将所述反向代理域名解析得到业务参数,将所述业务参数、所述反向代理域名和第三方域名对应保存在openresty代理服务器的数据库中,以供openresty代理服务器根据业务参数进行查询。
可选地,在所述自动跳转到对应的所述反向代理域名的步骤之后,还包括:
在站点配置文件中通过location通用匹配规则,匹配到所述反向代理域名对应的实现方式,在所述实现方式中实现后续步骤。
可选地,所述解除限制第三方cookie的方法,还包括:
在自动跳转到所述反向代理域名后,初始化目标变量,在lua脚本中预先实现截取业务参数并根据业务参数查询数据库,以及动态设置samesite属性的操作;
将所述操作的结果赋值到所述目标变量中,根据所述目标变量实现所述使所述第三方域名的服务器设置第三方cookie的步骤。
可选地,所述截取所述反向代理域名中的业务参数的步骤包括:
根据反向代理域名URI中的特殊字符定位到业务参数的最后一位,以反向代理域名URI中的第一位为起始位,进行截取。
可选地,所述根据访问所述主站域名的HTTP请求的消息首部,动态设置samesite属性到HTTP响应的消息首部上的步骤,包括:
在获取到浏览器访问所述主站域名的HTTP请求的消息首部后,使用匹配函数在消息首部的字符串中查找满足浏览器版本的匹配子串,若存在则返回所述匹配子串,并根据所述匹配子串判断所述浏览器是否支持samesite属性,若不存在则返回nil;
若所述浏览器不支持samesite属性,则将samesite属性设置为none,并设置到HTTP响应的消息首部上,通知所述浏览器不禁止第三方cookie。
可选地,所述根据所述业务参数查询所述openresty代理服务器的数据库的步骤包括:
编写数据库SELECT语句,使用所述数据库SELECT语句进行查询,其中选取的列为第三方域名,选取的表为所述openresty代理服务器的数据库表,筛选条件之一为所述业务参数。
可选地,所述确定并跳转到所述业务参数对应的第三方域名的步骤包括:
将所述第三方域名缓存至快取cache中,当openresty代理服务器的快取cache中存在所述业务参数对应的第三方域名时,直接从快取cache中将第三方域名取出。
此外,为实现上述目的,本发明还提供一种解除限制第三方cookie的设备,所述解除限制第三方cookie的设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的解除限制第三方cookie的程序,所述解除限制第三方cookie的程序被所述处理器执行时实现如上述的解除限制第三方cookie的方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有解除限制第三方cookie的程序,所述解除限制第三方cookie的程序被处理器执行时实现如上所述的解除限制第三方cookie的方法的步骤。
本发明实施例提出的一种解除限制第三方cookie的方法、设备及计算机可读存储介质,通过一层openresty代理,实现以下两个功能。第一,解决不同域的问题,反向代理域名和主站域名属于同一个域名的不同记录,并通知浏览器第三方cookie与第一方cookie属于同域。第二,对samesite做动态设置,但其他低版本的浏览器并不支持该属性,为此通过lua脚本,在代理层动态去设置samesite。服务器通过在http请求中设置samesite=none,来通知浏览器不去禁止第三方cookie。
从而解除浏览器对于第三方cookie的限制,保证主站点集成采用cookie登录方式的第三方系统的稳定性。另外,通过实现samesite=none的动态设置,其健壮性强,并满足各种浏览器场景。而且,由于使用同根域名,保证了samesite属性失效后,其主站点的集成业务依然不受第三方cookie的限制。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的终端结构示意图;
图2为本发明解除限制第三方cookie的方法一实施例的流程示意图;
图3为本发明自动跳转到对应的所述反向代理域名的步骤之后一实施例的流程示意图;
图4为本发明一实施例中的openresty代理服务器的数据库示意图;
图5为本发明一实施例中访问主站域名的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的终端结构示意图。
本发明实施例运行设备可以是PC,也可以是智能手机、平板电脑、电子书阅读器、便携计算机等具有显示功能的可移动式终端设备。
如图1所示,该运行设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
可选地,运行设备还可以包括摄像头、RF(Radio Frequency,射频)电路,传感器、音频电路、WiFi模块等等。其中,传感器比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别移动运行设备姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;当然,移动运行设备还可配置陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
本领域技术人员可以理解,图1中示出的运行设备结构并不构成对运行设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及解除限制第三方cookie的程序。
在图1所示的运行设备中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的解除限制第三方cookie的程序,并执行以下操作:
搭建openresty代理服务器,配置与待访问的主站域名的根域名一致的反向代理域名,并将所述反向代理域名解析并绑定到所述openresty代理服务器上;
当所述openresty代理服务器接收到对所述主站域名的访问后,自动跳转到所述反向代理域名,截取所述反向代理域名中的业务参数,并根据访问所述主站域名的HTTP请求的消息首部,动态设置samesite属性到HTTP响应的消息首部上;
根据所述业务参数查询所述openresty代理服务器的数据库,确定并跳转到所述业务参数对应的第三方域名,使所述第三方域名的服务器设置第三方cookie。
进一步地,处理器1001可以调用存储器1005中存储的解除限制第三方cookie的程序,还执行以下操作:
将所述反向代理域名解析得到业务参数,将所述业务参数、所述反向代理域名和第三方域名对应保存在openresty代理服务器的数据库中,以供openresty代理服务器根据业务参数进行查询。
进一步地,处理器1001可以调用存储器1005中存储的解除限制第三方cookie的程序,还执行以下操作:
在站点配置文件中通过location通用匹配规则,匹配到所述反向代理域名对应的实现方式,在所述实现方式中实现后续步骤。
进一步地,处理器1001可以调用存储器1005中存储的解除限制第三方cookie的程序,还执行以下操作:
在自动跳转到所述反向代理域名后,初始化目标变量,在lua脚本中预先实现截取业务参数并根据业务参数查询数据库,以及动态设置samesite属性的操作;
将所述操作的结果赋值到所述目标变量中,根据所述目标变量实现所述使所述第三方域名的服务器设置第三方cookie的步骤。
进一步地,处理器1001可以调用存储器1005中存储的解除限制第三方cookie的程序,还执行以下操作:
根据反向代理域名URI中的特殊字符定位到业务参数的最后一位,以反向代理域名URI中的第一位为起始位,进行截取。
进一步地,处理器1001可以调用存储器1005中存储的解除限制第三方cookie的程序,还执行以下操作:
在获取到浏览器访问所述主站域名的HTTP请求的消息首部后,使用匹配函数在消息首部的字符串中查找满足浏览器版本的匹配子串,若存在则返回所述匹配子串,并根据所述匹配子串判断所述浏览器是否支持samesite属性,若不存在则返回nil;
若所述浏览器不支持samesite属性,则将samesite属性设置为none,并设置到HTTP响应的消息首部上,通知所述浏览器不禁止第三方cookie。
进一步地,处理器1001可以调用存储器1005中存储的解除限制第三方cookie的程序,还执行以下操作:
编写数据库SELECT语句,使用所述数据库SELECT语句进行查询,其中选取的列为第三方域名,选取的表为所述openresty代理服务器的数据库表,筛选条件之一为所述业务参数。
进一步地,处理器1001可以调用存储器1005中存储的解除限制第三方cookie的程序,还执行以下操作:
将所述第三方域名缓存至快取cache中,当openresty代理服务器的快取cache中存在所述业务参数对应的第三方域名时,直接从快取cache中将第三方域名取出。
参照图2,本发明提供一种解除限制第三方cookie的方法,在本发明的解除限制第三方cookie的方法的流程中,所述流程包括:
步骤S10,搭建openresty代理服务器,配置与待访问的主站域名的根域名一致的反向代理域名,并将所述反向代理域名解析并绑定到所述openresty代理服务器上。
OpenResty(也称为ngx_openresty)是一个全功能的Web应用服务器。它打包了标准的Nginx核心、很多的常用的第三方模块、以及它们的大多数依赖项。通过揉和众多设计良好的Nginx模块,OpenResty有效地把Nginx服务器转变为一个强大的Web应用服务器,基于它开发人员可以使用Lua编程语言对Nginx核心以及现有的各种Nginx C模块进行脚本编程,构建出可以处理一万以上并发请求的极端高性能的Web应用。
以淘宝的域名http://www.taobao.com来解释域名的组成,看域名其实要从尾部开始看,也就是.com,.com是顶级域名(Top-level Domain,TLD),.com代表commercial,意思是商业。继续看www.taobao.com,顶级域名.com之后的taobao是二级域名,最后的www就是主机,比如可以用www代表网站,用mail代表邮箱,三级域名甚至是四级五级六级域名都是用户自由设置的,用于区分不同的服务或者不同的主机,当然也可以用多个子域名指向同一个服务或主机。例如聚划算的域名是ju.taobao.com,而司法拍卖的域名是sf.taobao.com,这两个都是子域名(三级域名)不同,对应不同的业务板块,但是都是属于taobao.com之下的,用不同入口以区分不同的功能。
反向代理(Reverse Proxy)方式是指用代理服务器来接收internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。其中正向代理代理的对象是客户端,反向代理代理的对象是服务端。举个例子,一个用户访问http://www.example.com/readme,但是www.example.com上并不存在readme页面,它是从另外一台服务器上取回来,然后作为自己的内容返回给用户。但是用户并不知情这个过程。对用户来说,就像是直接从www.example.com获取readme页面一样。这里所提到的www.example.com这个域名对应的服务器就设置了反向代理功能。反向代理服务器,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。
步骤S20,当所述openresty代理服务器接收到对所述主站域名的访问后,自动跳转到所述反向代理域名,截取所述反向代理域名中的业务参数,并根据访问所述主站域名的HTTP请求的消息首部,动态设置samesite属性到HTTP响应的消息首部上。
通过在站点配置文件中的块定义的虚拟主机中监听端口和域名,得到对所述主站域名的访问请求,并自动跳转到对应的反向代理域名。在location通用匹配规则中,初始化目标变量。接着通过引入lua脚本基于反向代理域名进行动态设置,并将结果赋值到目标变量中,其中目标变量包括动态设置的samesite属性变量,保存在快取cache中的第三方域名变量等。
HTTP(Hyper Text Transfer Protocol,超文本传输协议)是一个简单的请求-响应协议,通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应,是目前网页传输的的通用协议。HTTP协议采用了请求/响应模型,浏览器或其他客户端发出请求,服务器给与响应。就整个网络资源传输而言,包括message-header和message-body两部分。首先传递message-header,即http header消息(消息首部)。httpheader消息通常被分为4个部分:general header,request header,response header,entity header。但是这种分法界限不太明确,大体可分为Request和Response两部分。
SameSite属性是HTTP响应头(Response部分的Headers中的)Set-Cookie的属性之一,用来设置Http Cookie。它允许您声明该Cookie是否仅限于第一方或者同一站点上下文。SameSite接受下面三个值:Lax,Cookies允许与顶级导航一起发送,并将与第三方网站发起的GET请求一起发送,这是浏览器中的默认值;Strict,Cookies只会在第一方上下文中发送,不会与第三方网站发起的请求一起发送;None,Cookie将在所有上下文中发送,即允许跨域发送。以前None是默认值,但最近的浏览器版本将Lax作为默认值,以便针对某些类型的跨站请求伪造攻击具备有防御能力。
步骤S30,根据所述业务参数查询所述openresty代理服务器的数据库,确定并跳转到所述业务参数对应的第三方域名,使所述第三方域名的服务器设置第三方cookie。
openresty代理服务器维护有一个至少包含业务参数、反向代理域名和第三方域名的数据库。当从反向代理域名中截取得到业务参数后,根据业务参数在数据库中查询对应的第三方域名,并将第三方域名解析分解后赋值到目标变量中,用以完成对于主站域名访问的响应。以图4为例,其中业务参数一栏为tenant_code,反向代理域名一栏为relation_domain,第三方域名一栏为relation_pass。通过从反向代理域名https://zczy.erp-depart-alpha.myyscm.com中截取到zczy的业务参数后,就可以在数据库中查找到zczy业务参数对应的第三方域名为https://erptest.crrctp.com:9060,并以第三方域名对应的数据作为响应,使所述第三方域名的服务器成功设置第三方cookie。
为辅助理解上述解除限制第三方cookie的步骤,现在通过以下的一个例子来进行解释说明。
如图5所示,在步骤S10中,针对主站域名如www.abc.com,配置与主站域名的根域名一致的反向代理域名如a.abc.com,并将反向代理域名如a.abc.com解析并绑定到openresty代理服务器上。
在步骤S20中,当网络用户在客户端如浏览器上访问主站域名www.abc.com时,自动跳转到对应的反向代理域名a.abc.com,截取反向代理域名中的业务参数如a;根据访问主站域名的HTTP请求headers字段数据,动态设置samesite属性到HTTP响应headers字段数据中。
在步骤S30中,通过a查询openresty代理服务器的数据库,得到与a对应的第三方域名如www.xyz.com,返回正确数据作为响应。
在本实施例中,通过搭建openresty代理服务器,配置与待访问的主站域名的根域名一致的反向代理域名,并将所述反向代理域名解析并绑定到所述openresty代理服务器上;当所述openresty代理服务器接收到对所述主站域名的访问后,自动跳转到对应的所述反向代理域名,截取所述反向代理域名中的业务参数,并根据访问所述主站域名的HTTP请求的消息首部,动态设置samesite属性到HTTP响应的消息首部上;根据所述业务参数查询所述openresty代理服务器的数据库,确定并跳转到所述业务参数对应的第三方域名,返回所述第三方域名的数据作为响应。
通过一层openresty代理,实现以下两个功能。第一,解决不同域的问题,反向代理域名和主站域名属于同一个域名的不同记录,并通知浏览器第三方cookie与第一方cookie属于同域。第二,对samesite做动态设置,但其他低版本的浏览器并不支持该属性,为此通过lua脚本,在代理层动态去设置samesite。服务器通过在http请求中设置samesite=none,来通知浏览器不去禁止第三方cookie。
从而解除浏览器对于第三方cookie的限制,保证主站点集成采用cookie登录方式的第三方系统的稳定性。另外,通过实现samesite=none的动态设置,其健壮性强,并满足各种浏览器场景。而且,由于使用同根域名,保证了samesite属性失效后,其主站点的集成业务依然不受第三方cookie的限制。
可选的,所述将所述反向代理域名解析并绑定到所述openresty代理服务器上的步骤,还包括:
将所述反向代理域名解析得到业务参数,将所述业务参数、所述反向代理域名和第三方域名对应保存在openresty代理服务器的数据库中,以供openresty代理服务器根据业务参数进行查询。
以图4为例,若配置完与主站域名的根域名一致的反向代理域名后,通过从反向代理域名https://zczy.erp-depart-alpha.myyscm.com中可以解析得到zczy的业务参数,在数据库中保存业务参数zczy、反向代理域名https://zczy.erp-depart-alpha.myyscm.com以及对应的第三方域名https://erptest.crrctp.com:9060,使得通过业务参数查询数据库时,能够得到正确的对应第三方域名。
参照图3,本发明提供一种解除限制第三方cookie的方法,在本发明一实施例中,在所述自动跳转到对应的所述反向代理域名的步骤之后,还包括:
步骤S2001,在站点配置文件中通过location通用匹配规则,匹配到所述反向代理域名对应的实现方式,在所述实现方式中实现后续步骤。
在站点配置文件中配置好端口和域名,使虚拟主机通过监听端口和域名,让反向代理域名能够命中location通用匹配规则,其中location通用匹配规则会匹配到任何其它location匹配规则未匹配到的请求,相当于switch中的default,用来转发动态请求到后端应用服务器。
步骤S2002,在自动跳转到所述反向代理域名后,初始化目标变量,在lua脚本中预先实现截取业务参数并根据业务参数查询数据库,以及动态设置samesite属性的操作;
由于Openresty代理服务器具有可编程的能力,所以使用lua脚本,可以在配置文件中实现业务逻辑。其中openresty代理服务器以http协议请求的生命周期,去划分不同的阶段,并开放对应的能力进行修改。在本发明一实施例中,选取了rewrite阶段,在location通用匹配规则处初始化对应的目标变量。例如:
set $targetUrl ''; //目标url。
set $newHost ''; //目标 host。
set $errorPage '/50x.html'; //定义的错误日志。
set $tenantCode ''; //对应的租户code,即业务参数。
set $samesite '-evil'; //判断是否有samesite属性的标志。
接着,通过引入lua脚本,动态去设置目标变量,即targetUrl等值。在本发明一实施例中,通过在get-rewrite-url.lua脚本中实现截取业务参数并根据业务参数查询数据库,以及动态设置samesite属性的操作。
步骤S2003,将所述操作的结果赋值到所述目标变量中,根据所述目标变量实现所述使所述第三方域名的服务器设置第三方cookie的步骤。
在本发明一实施例中,通过在get-rewrite-url.lua脚本中实现截取业务参数并根据业务参数查询数据库,以及动态设置samesite属性的操作后,返回其结果赋值到如targetUrl的目标变量,从而返回所述第三方域名的数据作为响应,实现所述使所述第三方域名的服务器设置第三方cookie的步骤。
在本实施例中,通过简单、小巧、可移植、快速的轻量级动态脚本语言,实现最关键的截取业务参数并根据业务参数查询数据库,以及动态设置samesite属性的操作,从而其改造成本低,又无需第三方系统进行改造适配,大大缩短集成第三方的周期。而且侵入性低,通用性强,由于放在代理层实现,也无需关心业务代码的语言和实现,只要基于http方式通信即可支持。
可选地,所述截取所述反向代理域名中的业务参数的步骤包括:
根据反向代理域名URI中的特殊字符定位到业务参数的最后一位,以反向代理域名URI中的第一位为起始位,进行截取。
URI(Uniform Resource Identifier,统一资源标识符)代表一种字符串文本标准,表示请求服务器的路径,定义这么一个资源。在本发明一实施例中,以反向代理域名zczy.erp-depart-alpha.myyscm.com为例,其特殊字符为“.”,通过lua中的string.find()字符串查找函数,得到其起始索引和结束索引为5和5,通过lua中的string.sub()字符串截取函数,从原字符串中指定两个索引,截取索引之间的字符作为结果字符串。其中,头部索引设置为1,尾部索引设置为结束索引-1,即4,从而截取得到zczy的业务参数。在本发明实施例中,对于得到业务参数的方法不做限定。
可选地,所述根据访问所述主站域名的HTTP请求的消息首部,动态设置samesite属性到HTTP响应的消息首部上的步骤,包括:
在获取到浏览器访问所述主站域名的HTTP请求的消息首部后,使用匹配函数在消息首部的字符串中查找满足浏览器版本的匹配子串,若存在则返回所述匹配子串,并根据所述匹配子串判断所述浏览器是否支持samesite属性,若不存在则返回nil;
若所述浏览器不支持samesite属性,则将samesite属性设置为none,并设置到HTTP响应的消息首部上,通知所述浏览器不禁止第三方cookie。
当获取到浏览器访问主站域名的HTTP请求的消息首部时,在其中HTTP请求的消息首部中,即在Requests部分的header中,User-Agent的内容包含发出请求的用户信息,通过lua中的string.match()字符匹配函数,对User-Agent的内容进行匹配,若根据其中的匹配子串判断访问主站域名的浏览器满足浏览器的版本要求,且不支持samesite属性,则将其samesite属性设置为none,cookie将在所有上下文中发送,即允许跨域发送cookie。并将设置完的samesite属性通过HTTP响应的消息首部,即在Responses部分部分的header中的Set-Cookie进行设置,通知访问主站域名的浏览器不去禁止第三方cookie。
可选地,所述根据所述业务参数查询所述openresty代理服务器的数据库的步骤包括:
编写数据库SELECT语句,使用所述数据库SELECT语句进行查询,其中选取的列为第三方域名,选取的表为所述openresty代理服务器的数据库表,筛选条件之一为所述业务参数。
在截取反向代理域名后得到业务参数,根据业务参数查询openresty代理服务器的数据库。在本发明一实施例中,其数据库SELECT语句为:
local sql =[[SELECT relation_pass FROM c_tenant_relation WHERE is_deleted =0 and type =2 AND tenant_code = 'tenantCode']],
其中,选取的列relation_pass为第三方域名,选取的表c_tenant_relation为openresty代理服务器的数据库表,筛选条件之一tenant_code为业务参数。同样的,在本发明一实施例中,对于从数据库中筛选出业务参数对应的第三方域名,所采用的数据库语句不做限定。
可选地,所述确定并跳转到所述业务参数对应的第三方域名的步骤包括:
将所述第三方域名缓存至快取cache中,当openresty代理服务器的快取cache中存在所述业务参数对应的第三方域名时,直接从快取cache中将第三方域名取出。
由于快取cache的存在,可以做假象的web加速。当openresty代理服务器的快取cache拥有网络用户所想要的数据时:
a.Client端向Server端发送一个数据需求封包;
b.Server端接收之后,先比对这个封包的『来源』与预计要前往的『目标』网站是否为可接受。如果来源与目标都是合法的,或者说对于来源与目标网站,openresty代理服务器都能取得数据时,那么Server端会开始替Client获取数据。
c.Server首先会检查快取cache的数据(新的数据可能在内存中,较旧的数据则放置在硬盘上),如果存在Client所需的数据,那就将数据准备取出,而不经过向Internet发出要求获取数据或者经过openresty代理服务器的数据库中将第三方域名取出数据。
d.最后将数据回传给Client端。
此外,本发明实施例还提供一种解除限制第三方cookie的设备,所述解除限制第三方cookie的设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的解除限制第三方cookie的程序,所述解除限制第三方cookie的程序被所述处理器执行时实现如上述的解除限制第三方cookie的方法的步骤。
此外,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有解除限制第三方cookie的程序,所述解除限制第三方cookie的程序被处理器执行时实现如上所述的解除限制第三方cookie的方法的步骤。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种解除限制第三方cookie的方法,其特征在于,所述解除限制第三方cookie的方法包括:
搭建openresty代理服务器,配置与待访问的主站域名的根域名一致的反向代理域名,并将所述反向代理域名解析并绑定到所述openresty代理服务器上;
当所述openresty代理服务器接收到对所述主站域名的访问后,自动跳转到所述反向代理域名,截取所述反向代理域名中的业务参数,并根据访问所述主站域名的HTTP请求的消息首部,动态设置samesite属性到HTTP响应的消息首部上;
根据所述业务参数查询所述openresty代理服务器的数据库,确定并跳转到所述业务参数对应的第三方域名,使所述第三方域名的服务器设置第三方cookie。
2.如权利要求1所述的解除限制第三方cookie的方法,其特征在于,所述将所述反向代理域名解析并绑定到所述openresty代理服务器上的步骤,还包括:
将所述反向代理域名解析得到业务参数,将所述业务参数、所述反向代理域名,以及在访问主站域名时设置第三方cookie的第三方域名,对应保存在openresty代理服务器的数据库中,以供openresty代理服务器根据业务参数进行查询。
3.如权利要求1所述的解除限制第三方cookie的方法,其特征在于,在所述自动跳转到所述反向代理域名的步骤之后,还包括:
在站点配置文件中通过location通用匹配规则,匹配到所述反向代理域名对应的实现方式,在所述实现方式中实现后续步骤。
4.如权利要求1所述的解除限制第三方cookie的方法,其特征在于,所述解除限制第三方cookie的方法,还包括:
在自动跳转到所述反向代理域名后,初始化目标变量,在lua脚本中预先实现截取业务参数并根据业务参数查询数据库,以及动态设置samesite属性的操作;
将所述操作的结果赋值到所述目标变量中,根据所述目标变量实现所述使所述第三方域名的服务器设置第三方cookie的步骤。
5.如权利要求1所述的解除限制第三方cookie的方法,其特征在于,所述截取所述反向代理域名中的业务参数的步骤包括:
根据反向代理域名URI中的特殊字符定位到业务参数的最后一位,以反向代理域名URI中的第一位为起始位,进行截取。
6.如权利要求1所述的解除限制第三方cookie的方法,其特征在于,所述根据访问所述主站域名的HTTP请求的消息首部,动态设置samesite属性到HTTP响应的消息首部上的步骤,包括:
在获取到浏览器访问所述主站域名的HTTP请求的消息首部后,使用匹配函数在消息首部的字符串中查找满足浏览器版本的匹配子串,若存在则返回所述匹配子串,并根据所述匹配子串判断所述浏览器是否支持samesite属性,若不存在则返回nil;
若所述浏览器不支持samesite属性,则将samesite属性设置为none,并设置到HTTP响应的消息首部上,通知所述浏览器不禁止第三方cookie。
7.如权利要求1所述的解除限制第三方cookie的方法,其特征在于,所述根据所述业务参数查询所述openresty代理服务器的数据库的步骤包括:
编写数据库SELECT语句,使用所述数据库SELECT语句进行查询,其中选取的列为第三方域名,选取的表为所述openresty代理服务器的数据库表,筛选条件之一为所述业务参数。
8.如权利要求1所述的解除限制第三方cookie的方法,其特征在于,所述确定并跳转到所述业务参数对应的第三方域名的步骤包括:
将所述第三方域名缓存至快取cache中,当openresty代理服务器的快取cache中存在所述业务参数对应的第三方域名时,直接从快取cache中将第三方域名取出。
9.一种解除限制第三方cookie的设备,其特征在于,所述解除限制第三方cookie的设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的解除限制第三方cookie的程序,所述解除限制第三方cookie的程序被所述处理器执行时实现如权利要求1至8中任一项所述的解除限制第三方cookie的方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有解除限制第三方cookie的程序,所述解除限制第三方cookie的程序被处理器执行时实现如权利要求1至8中任一项所述的解除限制第三方cookie的方法的步骤。
CN202111296947.8A 2021-11-04 2021-11-04 解除限制第三方cookie的方法、设备及存储介质 Active CN113746941B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111296947.8A CN113746941B (zh) 2021-11-04 2021-11-04 解除限制第三方cookie的方法、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111296947.8A CN113746941B (zh) 2021-11-04 2021-11-04 解除限制第三方cookie的方法、设备及存储介质

Publications (2)

Publication Number Publication Date
CN113746941A CN113746941A (zh) 2021-12-03
CN113746941B true CN113746941B (zh) 2022-02-08

Family

ID=78727329

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111296947.8A Active CN113746941B (zh) 2021-11-04 2021-11-04 解除限制第三方cookie的方法、设备及存储介质

Country Status (1)

Country Link
CN (1) CN113746941B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115022387A (zh) * 2022-06-27 2022-09-06 平安付科技服务有限公司 跨域预检请求的处理方法、装置、设备及介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111988360A (zh) * 2020-07-17 2020-11-24 西安抱朴通信科技有限公司 一种云平台中会话管理方法、存储介质和电子装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7925694B2 (en) * 2007-10-19 2011-04-12 Citrix Systems, Inc. Systems and methods for managing cookies via HTTP content layer
US8650249B2 (en) * 2010-10-13 2014-02-11 International Business Machines Corporation Selectively processing cookies in a proxy
CN109218368B (zh) * 2017-07-05 2021-09-07 北京京东尚科信息技术有限公司 实现Http反向代理的方法、装置、电子设备和可读介质
CN109067914B (zh) * 2018-09-20 2019-12-13 星环信息科技(上海)有限公司 Web服务的代理方法、装置、设备及存储介质
CN109587140B (zh) * 2018-12-06 2021-11-30 四川长虹电器股份有限公司 基于openresty动态口令代理网关的实现方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111988360A (zh) * 2020-07-17 2020-11-24 西安抱朴通信科技有限公司 一种云平台中会话管理方法、存储介质和电子装置

Also Published As

Publication number Publication date
CN113746941A (zh) 2021-12-03

Similar Documents

Publication Publication Date Title
CN107003877B (zh) 应用的上下文深层链接
CN110519380B (zh) 一种数据访问方法、装置、存储介质及电子设备
US7702317B2 (en) System and method to query wireless network offerings
US8788528B2 (en) Filtering cached content based on embedded URLs
EP2985705A2 (en) Webpage access method and apparatus, and router
CN112104617B (zh) 微服务的权限管理方法、装置、设备及存储介质
JP2018506756A (ja) ウェブサイト・アクセス方法、装置、およびウェブサイト・システム
US7987243B2 (en) Method for media discovery
CN106790601B (zh) 服务地址的读取装置、系统和方法
US20140214921A1 (en) System and method for identification of an application executed on a mobile device
WO2010094927A1 (en) Content access platform and methods and apparatus providing access to internet content for heterogeneous devices
CN108256014B (zh) 页面展示方法及装置
CN113452780B (zh) 针对客户端的访问请求处理方法、装置、设备及介质
CN109600458B (zh) 网站访问方法及装置
US8566448B2 (en) System and method for providing device file using device identifier
US20120054327A1 (en) Site redirection
CN111522849A (zh) 数据库动态访问方法、服务器及存储介质
CN113746941B (zh) 解除限制第三方cookie的方法、设备及存储介质
CN114024728A (zh) 一种蜜罐搭建方法以及应用方法
CN108667768B (zh) 一种网络应用指纹的识别方法及装置
US20070055663A1 (en) Programmatic response for detected variants of HTTP requests
US20140280335A1 (en) System and method to allow a domain name server to process a natural language query and determine context
CN112836148A (zh) 报表显示方法和装置、存储介质及电子设备
JP2009146063A (ja) レコメンド提供サーバ、レコメンド提供プログラム及びレコメンド提供方法
CN103793459B (zh) 一种网页打开方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant