IT技术博客大学习 共学习 共进步

用Flash理跨域上传或异步请求不能传Cookie的解决方案

流水孟春 2011-11-13 21:17:12 浏览 2,664 次

    用flash上传或flash做代理异步请求的时候,因为flash不能直接传递浏览器中的cookie到服务器,引起SESSION无法识别身份。想当年刚碰到这个问题的时候会非常头痛。其实在PHP里面,解决时很容易的。

    客户端:把cookie变量添加到URL

    var url = 'http://www.vkas.net/index.php?user/account/getInfo';
    if(document.cookie.length > 0) {
        var cookies = document.cookie.split(';');
        for(var i in cookies) {
            url += '&' + encodeURI(cookies[i].replace(/^\s+|\s+$/g, ''));
        }
    }
  

    服务器端:把URL中传的cookie.session.name设置到session id。这个过程必须在session_start()之前做。

    // 解决Flash不能传Cookie
    if (!empty($_GET[session_name()])) {
        session_id($_GET[session_name()]);
    }

建议继续学习

  1. 关于IO的同步,异步,阻塞,非阻塞 (阅读 16,424)
  2. cookie窃取和session劫持 (阅读 14,425)
  3. fsockopen 异步处理 (阅读 10,203)
  4. curl 命令使用cookie (阅读 9,844)
  5. 优雅绝妙的Javascript跨域问题解决方案 (阅读 7,945)
  6. 前端开发中Cookie那些事儿 (阅读 7,207)
  7. 跨域请求的iframe解决方案(1) (阅读 6,321)
  8. 配合jquery实现异步加载页面元素 (阅读 6,284)
  9. jQuery中getJSON跨域原理详解 (阅读 6,264)
  10. 如何设置一个永远无法删除的Cookie (阅读 6,263)