javascript - 为何 二级域名下cookie可以获取,却不能使用ajax自动发回,cookie 不能跨域?

php中文网
发布: 2016-08-18 09:16:14
原创
1119人浏览过

情景复现流程:

立即学习Java免费学习笔记(深入)”;

机器A局域网地址:192.168.9.8
机器B局域网地址:192.168.9.9
登录后复制
登录后复制
分别配置机器A、B的hosts地址:

配置机器A的地址:192.168.9.8 --> a.site.com 
配置机器B的地址:192.168.9.9 --> b.site.com
登录后复制
登录后复制
机器A为前端js代码 ,启动了服务,并在浏览器上请求 机器B(代表服务器端)的第一个地址http://b.site.com:8080/login/... , 请求的同时 服务器端 注入了cookie,设置 cookie 的key为‘site’,value为‘date’,doman 为 .site.com, path 为 /,然后在浏览器上开新页面并在新页面请求 http://a.site.com:8080/index , 通过chrome控制台可以看到http://b.site.com:8080/注入的cookie,但是.......通过ajax走接口的时候,cookie并没有出现在请求头,试了多种方式,get、post、异步、同步都不行。最后使用了jsonp的方式,cookie出现了

不好用的代码如下:

$("a").click(function(event) {
        $.ajax({
            url: 'http://b.site.com:8080/test/test.htm',
            type: 'post',
            dataType: 'json',
            data: {'token': 'value'},
        })
        .done(function() {
            console.log("success");
        })
        .fail(function() {
            console.log("error");
        })
        .always(function() {
            console.log("complete");
        });
});
登录后复制
登录后复制

好用的代码如下:

function flightHandler(data) {
    console.log(data);
    // body...
};

$("a").click(function(event) {
    $.ajax({
         type: "get",
         url: "http://b.site.com:8080/test/test.htm",
         dataType: "jsonp",
         jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback)
         jsonpCallback:"flightHandler",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写"?",jQuery会自动为你处理数据
         success: function(data){
            console.log(data);
         },
         error: function(){
             alert('fail');
         }
     });
});
登录后复制
登录后复制

请大神们帮忙看看,如能解惑,万分感谢

回复内容:

情景复现流程:

立即学习Java免费学习笔记(深入)”;

机器A局域网地址:192.168.9.8
机器B局域网地址:192.168.9.9
登录后复制
登录后复制
分别配置机器A、B的hosts地址:

配置机器A的地址:192.168.9.8 --> a.site.com 
配置机器B的地址:192.168.9.9 --> b.site.com
登录后复制
登录后复制
机器A为前端js代码 ,启动了服务,并在浏览器上请求 机器B(代表服务器端)的第一个地址http://b.site.com:8080/login/... , 请求的同时 服务器端 注入了cookie,设置 cookie 的key为‘site’,value为‘date’,doman 为 .site.com, path 为 /,然后在浏览器上开新页面并在新页面请求 http://a.site.com:8080/index , 通过chrome控制台可以看到http://b.site.com:8080/注入的cookie,但是.......通过ajax走接口的时候,cookie并没有出现在请求头,试了多种方式,get、post、异步、同步都不行。最后使用了jsonp的方式,cookie出现了

不好用的代码如下:

$("a").click(function(event) {
        $.ajax({
            url: 'http://b.site.com:8080/test/test.htm',
            type: 'post',
            dataType: 'json',
            data: {'token': 'value'},
        })
        .done(function() {
            console.log("success");
        })
        .fail(function() {
            console.log("error");
        })
        .always(function() {
            console.log("complete");
        });
});
登录后复制
登录后复制

好用的代码如下:

function flightHandler(data) {
    console.log(data);
    // body...
};

$("a").click(function(event) {
    $.ajax({
         type: "get",
         url: "http://b.site.com:8080/test/test.htm",
         dataType: "jsonp",
         jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback)
         jsonpCallback:"flightHandler",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写"?",jQuery会自动为你处理数据
         success: function(data){
            console.log(data);
         },
         error: function(){
             alert('fail');
         }
     });
});
登录后复制
登录后复制

请大神们帮忙看看,如能解惑,万分感谢

withCredentials=true,并且保证服务端允许跨域,具体可以参考cors

domain不是你说是什么就是什么。cookie的domain和ajax的domain不是一回事

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号