跨域验证cookie与缓存控制
1. 是否能跨域完全取决于浏览器控制,浏览器可以直接拒绝发送跨域请求(服务器根本收不到),也可以发送给服务器等接收到返回信息后决定是否让它被读取。
2. 服务器并不能辨别请求是从哪个源发过来的,只有在客户端能够知道,因此浏览器承担起了这个责任,对于跨域ajax请求会自动添加origin头部,让服务器能够知道请求来自一个陌生的源。如果服务器觉得该源可信任,需要在response-header中增加字段Access-Control-Allow-Origin,告诉浏览器可以让请求源读取返回的报文。(也就是说,服务器一定是会返回响应的,但如果没有跨域字段的授权,该响应被浏览器拦截,不会交到请求源手里。)
3. 如果自己编写一个浏览器,完全可以避开跨域的控制,这样服务器是无法分辨请求来自哪里的,因此对于重要资源,服务器端还应另外增加验证措施(如cookie或指令等),不能完全依靠浏览器。
应用场景:代理请求到线上服务器请求数据(从Localhost: 源发送的),会遇到跨域用户验证的问题。
4.客户端的脚本也可以做一些简单验证,前端路由可以在请求发送前,重定向未通过验证的页面(如重定向到登陆页面,被中断的导航实际是没有发送请求的),没有在前端js里控制的url(如一些请求JSON的接口url),是不能通过前端来验证登陆状态的。
5.由服务器通过response-header中set-cookie而写入的cookie会有httponly属性,通过js是无法操作读写的,而js可以写入新的cookie,在下次发送请求时在request-header中一并发送给服务器。
6.缓存控制。request和response的header中都会有cache-control,response中的表示授意浏览器的操作,request中的表示浏览器本次的实际操作。如ctrl+F5(或控制台设置disabled cache后) 发送的request head里就会有cache-control:no-cache,表示本次请求浏览器不使用缓存,类似还有cache-control:max-age=0,表示本次将与服务器协商。
跨域验证cookie与缓存控制的更多相关文章
- CP="CAO PSA OUR" 用P3P header解决iframe跨域访问cookie
1.IE浏览器iframe跨域丢失Session问题 在开发中,我们经常会遇到使用Frame来工作,而且有时是为了跟其他网站集成,应用到多域的情况下,而Iframe是不能保存Session的因此,网上 ...
- 通过设置P3P头来实现跨域访问COOKIE
通过设置P3P头来实现跨域访问COOKIE 实际工作中,类似这样的要求很多,比如说,我们有两个域名,我们想实现在一个域名登录后,能自动完成另一个域名的登录,也就是PASSPORT的功能. 我只写一个大 ...
- SSO单点登录、跨域重定向、跨域设置Cookie、京东单点登录实例分析
最近在研究SSO单点登录技术,其中有一种就是通过js的跨域设置cookie来达到单点登录目的的,下面就已京东商城为例来解释下跨域设置cookie的过程 涉及的关键知识点: 1.jquery ajax跨 ...
- 跨域共享cookie和跨域共享session
转载自:http://blog.csdn.net/ahhsxy/article/details/7356128 这里所说的跨域,是指跨二级域名,而且这些域名对应的应用都在同一个app上, 比如我有以下 ...
- 京东商城跨域设置Cookie实现SSO单点登陆过程
可以先看下这边文章:http://blog.chinaunix.net/uid-25508399-id-3431705.html 1.点击首页的登陆按钮跳转到京东的登陆中心https://pass ...
- (十)整合 JWT 框架,解决Token跨域验证问题
整合 JWT 框架,解决Token跨域验证问题 1.传统Session认证 1.1 认证过程 1.2 存在问题 2.JWT简介 2.1 认证流程 2.2 JWT结构说明 2.3 JWT使用方式 3.S ...
- PHP 通过设置P3P头来实现跨域访问COOKIE
CentOS的系统(Linux 内核) 编辑HOST vi /etc/hosts 加入127.0.0.1 www.a.com127.0.0.1 www.b.com 首先:创建 a_setcookie. ...
- PHP 跨域写cookie
实际工作中,类似这样的要求很多,比如说,我们有两个域名,我们想实现在一个域名登录后,能自动完成另一个域名的登录,也就是PASSPORT的功能. 我只写一个大概,为了测试的方便,先编辑hosts文件,加 ...
- 在IE浏览器中iframe跨域访问cookie/session丢失的解决办法
单点登录需要在需要进入的子系统B中添加一个类,用于接收A系统传过来的参数: @Action(value = "outerLogin", results = { @Result(na ...
随机推荐
- day28Spark
PS:因为Spark是用内存运行 的,非常快 PS: 1.下面就是将conf的spark-env.template改变成spark-env.sh,并添加红色部分 2.修改slaves文件添加从设备 启 ...
- linux服务器的日志管理
消息紧急程度排行 emerg:该系统不可用 alert:需要立即修改 crit:紧急情况 err:错误信息 warning:预警信息 notice:具有重要性的普通条件 info:提供信息的消息 de ...
- nginx屏蔽某一ip的访问
假设我们想禁止访问nginx次数最多的ip访问我们的网站 我们可以先查出那个ip访问次数最多 awk '{print $1}' nginx.access.log |sort |uniq -c|sort ...
- Java打印水仙花数
public class Test2 { public static void main(String[] args) { //水仙花 数 指的是一个三位数(100-999) //三位数本身= 百位数 ...
- sqler sql 转rest api 数据聚合操作
sqler 2.0 提供了一个新的指令aggregate,注意这个和sql 的聚合函数不是一个概念,这个只是为了 方便api数据的拼接 参考格式 databases { exec = &qu ...
- Unity3D协同函数与异步加载功能实战 学习
- 无损压缩PNG工具
http://nullice.com/archives/1998 http://nullice.com/archives/1998 http://nullice.com/limitPNG/ https ...
- 模拟实现strncpy,strncat,strncmp
1.模拟实现strncpy <1.>strncpy相比于strcpy增加了size_t参数可以实现最多拷贝的字节数<2.>(size_t不可以超出拷贝存放的内存大小)来保证不 ...
- mybatis 一对多,(多对一,一对一
多对一,和一对一是同一种写法,每种写法又分在数据库关联和在mybatis关联 1,多对一,一对一数据库关联 2,多对一,一对一mybatis关联 3,一对多,数据库关联,注意,Java type改of ...
- 安装Redis的PHP扩展
1.安装phpize(php如果升级到php7,这步会报错,报错参考:https://www.cnblogs.com/clubs/p/10091103.html) yum install php-de ...