ajax请求cookie有效性问题验证
与人讨论时遇到一个问题,就是:
浏览器中后台发起的一个异步ajax请求,服务器做响应时,附带了cookie信息,那么后续对同域名下其他页面请求时,该cookie是否有效,会一并随请求提交到web服务器呢?
自己是对web相关的标准不熟,只知道在普通前台请求时这种cookie会有效,对ajax请求的情况就暂时不确定。但想知道该问题的答案究竟是什么,去翻阅相关的标准是远水救近火。本着It's easier to check than to guess的原则,决定先写段程序来验证这个问题。相关代码如下
发起ajax请求的html页面test.html的代码为
<script type="text/javascript" src="lib/jquery-1.11.2.min.js"></script>
<script type="text/javascript">
$.get('/api/async', function(result){
window.location.href=result.url;
}, 'json')
</script>
后台'/api/async'和'/api/index'服务程序的代码为
import web
import json class async:
def GET(self):
web.setcookie('web', 'python')
return '{"url": "/api/index"}' class index:
def GET(self):
cookies = web.cookies()
return json.dumps(cookies) routes = (
'/api/async', 'async',
'/api/index', 'index'
) app = web.application(routes, globals(), False)
app.run()
我们用浏览器先访问test.html页面,在其中触发异步ajax访问'/api/async',如代码所示,其响应结果有cookie信息,并且body是json数据,有一个url为'/api/index',test.html在收到响应后就前台跳转访问该url,'/api/index'服务响应中会将所有的cookie信息原样返回给浏览器。
对比'/api/index'返回的结果与'/api/async'中设置的cookie,就可以知道前面问题的答案了,实际验证结果如下图所示

可以看出,Firefox中(具体使用的是version33.1),ajax异步请求'/api/async'的响应中设置的cookie,对后续其他其他前台页面的请求是有效的
另外用IE11进行验证,该cookie也是有效的!
~~ end ~~
ajax请求cookie有效性问题验证的更多相关文章
- 客户端ajax请求为实现Token验证添加headers后导致正常请求变为options跨域请求解决方法
客户端为了实现token认证,通过Jquery的ajaxSetup方法全局配置headers: 全局配置headers后会导致部分不需要token认证的请求变为options请求,导致跨域访问.报错信 ...
- Tornado 的安全性保障机制Cookie XSRF跨站请求伪造阻断 &用户验证机制
6.1 Cookie 对于RequestHandler,除了在第二章中讲到的之外,还提供了操作cookie的方法. 设置/获取 注意:Cookie 在浏览器调试时, 只有在第一次访问该网站的时候获取到 ...
- 通过配置http拦截器,来进行ajax请求验证用户登录的页面跳转
在.NET中验证用户是否登录或者是否过期,若需要登录时则将请求转向至登录页面. 这个流程在进行页面请求时是没问题的,能正确进行页面跳转. 然而在使用xmlhttprequest时,或者jq的getJs ...
- BBS(第一天)项目之 注册功能实现通过forms验证与 前端ajax请求触发查询数据库判断用户是否存在的功能实现
1.BBS项目之注册功能通过forms验证 from django import forms from blog.models import User from django.contrib.auth ...
- 使用ajax请求接口,跨域后cookie无法设置,全局配置ajax;及使用axios跨域后cookie无法设置,全局配置axios
问题一: 使用ajax/axios跨域请求接口,后端放行了,能够正常获取数据,但是cookie设置不进去,后端登录session判断失效 ajax解决办法: //设置ajax属性 crossDomai ...
- django 的ajax 请求,使用form的验证机制。
所有的form都需要在后台验证,前台验证是不可靠的,django的验证是后台验证,前台提示错误信息. js验证是在前台的,无需发送消息给后台,但安全性不可靠,强调的是用户体验. 要求,使用弹出框,弹出 ...
- 【HTTP header】【Access-Control-Allow-Credentials】跨域Ajax请求时是否带Cookie的设置
1. 无关Cookie跨域Ajax请求 客户端 以 Jquery 的 ajax 为例: $.ajax({ url : 'http://remote.domain.com/corsrequest', d ...
- ajax请求携带 cookie
之前都有这样一个理解:ajax请求时是不会自动带上cookie的,要是想让他带上的话,必须哟啊设置withCredential为true.这个说法会让人产生完全扭曲的误解,我就是其中之一.完整的无歧义 ...
- vue项目使用axios发送请求让ajax请求头部携带cookie
最近做vue项目时遇到登录权限问题,登录以后再发送的请求头部并没有携带登录后设置的cookie,导致后台无法校验其是否登录.检查发现是vue项目中使用axios发送ajax请求导致的.查看文档得知ax ...
随机推荐
- Android中dp,px,sp概念梳理以及如何做到屏幕适配
http://blog.csdn.net/jiangwei0910410003/article/details/40509571
- HDU 4944 FSF’s game(2014 Multi-University Training Contest 7)
思路: ans[n]= ans[n-1] + { (n,1),(n,2).....(n,n)} 现在任务 是 计算 { (n,1),(n,2).....(n,n)}(k=n的任意因子) 很明显 ...
- 用JS获取地址栏参数的方法(超级简单)
方法一:采用正则表达式获取地址栏参数:( 强烈推荐,既实用又方便!) function GetQueryString(name) { var reg = new RegExp("( ...
- BSS段 data段 text段 堆heap 和 栈stack
BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域.BSS是英文Block Started by Symbol的简称.BSS段属于静态内存分配. 数 ...
- c——I/O Multiplexing笔记
1. select第一个参数为最大FD(int)+1,因为虽然select参数里有三个set,但分配到的fd值是不会重复的,当select检查fd可用时(可读或可写或异常),会遍历进程fd表,这时遍历 ...
- android开发中的问题集锦(慢慢搬运...)
1, android 设置ExpandableListView 系统默认箭头到右边 if(android.os.Build.VERSION.SDK_INT < android.os.Build. ...
- JS日期类型处理
Date 操作日期和时间的对象 Date.getDate( ) 返回一个月中的某一天 Date.getDay( ) 返回一周中的某一天 Date.getFullYear( ) 返回Date对象的年份字 ...
- VMware-workstation-full-12.0.0-2985596&VMware-player-12.0.0-2985596
VMware-workstation-full-12.0.0-2985596 永久KEY:YV3D2-A0D50-481XP-KPNGE-ZV2ZF VMware-player-12.0.0-2985 ...
- readelf与动态库
使用arm-linux-gcc编译的可执行文件可能会无法在开发板上执行,并提示:-/bin/sh xxx not found 解决办法: 在主机上使用readelf -d xxx 来查看该程序所需要的 ...
- CheckBoxList控件获取多选择,需要遍历
CheckBoxList控件获取多选择,需要遍历,环境:vs2008 在页面上添加CheckBoxList控件,输入项值 a,b,c,d.然后添加按钮 Button2确定,如何获取CheckBoxLi ...