加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ajax – 通过JSONP进行Cookie访问

发布时间:2020-12-16 03:08:12 所属栏目:百科 来源:网络整理
导读:我在domain.com中有一个页面,它将一个JSONP ajax请求(使用jQuery的.getJSON()函数)发送到anotherdomain.com中的URL.我认为(读取:假设)anotherdomain.com中的资源可以对该域中设置的任何cookie进行服务器端访问,但情况似乎并非如此? ajax调用专门用于访问特
我在domain.com中有一个页面,它将一个JSONP ajax请求(使用jQuery的.getJSON()函数)发送到anotherdomain.com中的URL.我认为(读取:假设)anotherdomain.com中的资源可以对该域中设置的任何cookie进行服务器端访问,但情况似乎并非如此?

ajax调用专门用于访问特定cookie,进行一些数据操作并返回由cookie值键入的丰富信息集.原始域没有直接访问cookie值,所以我认为ajax请求将保持我需要的状态.

我忽略了哪些关于cookie的关键信息?我很累,我只是没有看到它.

谢谢.

UPDATE

我找到了一种方法,但它看起来像JSONP,所以我想知道为什么这种方式有效,而Ajax版本没有.请求是否与浏览器会话断开连接,以便无法访问cookie?

<script type="application/x-javascript" src="<?php echo $service_url . '&callback=interests' ?>"></script>
<script type="text/javascript">
  function interests( data ) {
    $( function() {
      var c_behaviors = data.length;
      var ids         = [];

      for( var i = 0; i < c_behaviors; i++ ) {
        ids.push( data[i].behavior_id );
      }

      $('body').append( '<p><label>Returned:</label> ' + ids.join( ',' ) + '</p>' );       
    });
  }
</script>
The same origin policy applies到所有ajax请求,因此如果在ajax调用中访问的域与浏览器中加载的域(document.host)不同,则不会发送与请求的URL中的域关联的所有cookie.因此,JSONP方法有效,因为它在窗口中写出了一个新的脚本标记,其行为类似于浏览器可以对外部域发出的任何资源请求(因此传递与该域中的域相关联的所有cookie).我也通过简单地从我的chrome控制台调用$.post(“http://atdmt.com”)来确认这一点,而在浏览器中的stackoverflow.com上(我的浏览器中唯一一个有cookie的域名)答案)它并没有在请求标题中发送任何cookie.

另一个解决为anotherdomain.com维护状态问题的解决方案是让anotherdomain.com设置第一方cookie(通过不设置cookie的域属性)以及何时向anotherdomain.com发出ajax / json请求通过javascript访问这些cookie并使用标准HTTP参数推送它们.

希望我有所帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读