跨域验证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 ...
随机推荐
- readv与writev
[root@bogon mycode]# cat writev.c #include<stdio.h> #include<string.h> #include<unist ...
- 使用k8s && minio 进行 postgres 数据库自动备份
通过k8s 的定时任务job,我们可以方便的进行定时任务应用的开发,通过minio s3 兼容的cloud native 存储 我们可以方便的通过http 请求进行数据文件的备份,以下简单演示下如 ...
- C# to IL 7 Pointers(指针)
Pointers are the heart and soul of a programming language. The only reason why the Cprogramming lang ...
- Odoo 开源协议讨论
Odoo 开源协议讨论 Odoo 9 开始使用的 LGPL 开源协议,所以模块的加密并不会违反 Odoo 的开源协议. 如果使用 Odoo 8 (含)以前的版本开发模块,那么你在分发模块时也必须给使用 ...
- SelectDataTable
项目地址 : https://github.com/kelin-xycs/SelectDataTable SelectDataTable 一个 用 C# 实现的 用 Sql select DataT ...
- mysql之 mysql_config_editor/login-path 登录密码保护
login-path是MySQL5.6开始支持的新特性.通过借助mysql_config_editor工具将登陆MySQL服务的认证信息加密保存在.mylogin.cnf文件(默认位于用户主目录) . ...
- ssh证书免认证登录
思路: 客户端私钥存放于客户端,/root/.ssh/id_rsa 将客户端公钥存放于要远程控制服务器上:将客户在公钥id_rsa.pub内容追加到 /root/.ssh/authorized_key ...
- 自定义flume的hbase sink 的序列化程序
package com.hello.hbase; import java.nio.charset.Charset; import java.text.SimpleDateFormat; import ...
- linux centos 安装php的memcache扩展
一.centos6.5 yum安装php的memcache扩展 搜索memcache yum search memcache 有了,现在可以安装了 yum -y install memcached m ...
- Jmeter性能监测及安装插件(推荐)
本文部分理论转自Jmeter官网:https://jmeter-plugins.org/wiki/PerfMon/ ,并结合个人实践编写 一.介绍 在负载测试期间,了解加载服务器的运行状况很重要.如 ...