zepto跨域ajax无法带cookie的问题
来源:互联网 发布:php中tr什么意思 编辑:程序博客网 时间:2024/04/29 16:25
在A域的代码中,用zepto的ajax方法去向B域请求数据。同时,我们希望把B域的cookie也随请求带过去,代码如下
$.ajax({ url: 'B', type: 'GET', xhrFields: { withCredentials: true }});
withCredentials这个参数是为了让XMLHttpRequest发起跨域请求的时候,能带上目标域的cookie。
这在使用jquery的时候并没有问题,但是使用zepto的时候,发现cookie并没有被带上。
在官方文档中,关于ajax的部分是这样写的
xhrFields (default: none): an object containing properties to be copied over verbatim to the XMLHttpRequest instance. v1.1+
意思是可以在options里面设置xhrFields的相关属性,比如上面提到的withCredentials。值得注意的是,后面标注了实现版本是1.1+。我们目前使用的是1.1.1,按理说应该是支持的。
在反复尝试后,cookie依然无法带过去,所以只能通过看源码解决了。确认下是否真的实现了这个属性。
下面是1.1-stable的版本:
zepto-ajax-1.1-stable
在代码中,搜索xhrFields,发现只有如下一处与之相关
if (settings.xhrFields) for (name in settings.xhrFields) xhr[name] = settings.xhrFields[name]
此处xhrField是通过setting对象带进来的,而setting对象是在ajaxBeforeSend方法中传入的,所以跟ajax初始化时的options参数并没有关系。
所以得出的结论是zepto库的ajax模块中,并没有实现与文档相匹配的options的xhrFields属性,如果要达到带cookie的效果,只能通过下面代码解决
$.ajaxSettings.beforeSend = function(xhr) { // see https://github.com/madrobby/zepto/issues/274 xhr.withCredentials = true; // TODO(elsigh): Do this in zepto w/ xhrFields. };
顺便查看了一下1.2.0版本ajax模块的代码,也没有实现通过options设置xhrFields的功能。。。
原文出处:http://www.foreverpx.cn
转载请注明出处。
0 0
- zepto跨域ajax无法带cookie的问题
- 跨域Ajax请求时是否带Cookie的设置
- zepto,jquery关于cookie存放时间问题
- ajax获取Cookie的问题
- ajax修改cookie的问题
- cookie无法写入的问题
- 郁闷的问题——URL带参数时就无法获取Cookie
- 【HTTP header】【Access-Control-Allow-Credentials】跨域Ajax请求时是否带Cookie的设置
- ajax 跨域丢失cookie的问题
- zepto 操作 cookie
- js 无法删除cookie的问题
- Ajax跨域请求COOKIE无法带上的解决办法
- Ajax跨域请求COOKIE无法带上的解决办法
- Ajax跨域请求COOKIE无法带上的解决办法
- Ajax跨域请求COOKIE无法带上的解决办法
- Ajax跨域请求COOKIE无法带上的解决办法
- zepto之ajax
- zepto的ajax方法现学现用及es6编译为es5
- foreach的局限性
- Windows Embedded Compact 2013 EM335X
- leetcode 520. Detect Capital
- HDU1312 深搜 red and black
- STL——map的用法
- zepto跨域ajax无法带cookie的问题
- 为什么要源码编译
- matlab中去掉矩阵重复行并且不改变原顺序
- mybatis的xml配置中使用${}可能发生SQL注入,应使用#{}
- 杭电2027 统计元音
- Eclipse下Python插件(pydev)的安装
- 【算法】子数组和的问题总结
- Android-如何开发一个功能强大的ImagePicker
- Spring4.x官方参考文档中文版——第21章 Web MVC框架(30)