跨站访问如何保证session的正常使用

1、最近公司开发了一个网站项目,一切顺利。由于网页没有兼容手机浏览器,后来添加了一个webapp端,独立于另一个站点,用于解决兼容手机浏览器的问题。其中webapp端的数据全部通过ajax进行请求另一个站点的数据。由于原站点是使用session机制,所以当webapp端在跨站调用数据时,存在着跨站访问原session不能使用问题,即第一次访问得到的sessionID在第二次访问时不能再次带上,导致每次访问数据前都要重新登录。

2、问题背景交代清楚后,我们来针对问题的解决。

  (1)、服务器端:在返回给前端请求结果前加上以下代码

function return($data){
       $u = $_SERVER['HTTP_REFERER'];
        preg_match("/^(w+://)?([^/]+)/i", $u , $matches);
        header('Access-Control-Allow-Origin:'.$matches[0]); //允许跨站访问的站点域名
        header("Access-Control-Allow-Credentials:true");  //跨域请求头设置
     return $data;
}     

  (2)、前端进行ajax请求时,要加入如下代码

function $POST (url, data, callback) {
    loadingBox.create()
    $.ajax({
        url:(UrlPost+url),
        type: 'post',
        data: data,
        xhrFields: {
            withCredentials: true
        },//添加跨域名请求参数
        crossDomain: true,//添加跨域名请求参数
        success:function(data){
           ...
        },
        error: function (err) {
            ...
        }
    })
}

    

原文地址:https://www.cnblogs.com/jiangzuo/p/7055536.html