首页 > CMS建站 > 织梦DEDE > 正文

织梦系统如何实现跨域共享cookie的BUG修复以及使用教程

2020-07-03 12:40:45
字体:
来源:转载
供稿:网友
这篇文章主要为大家详细介绍了织梦系统如何实现跨域共享cookie的BUG修复以及使用教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴。

      首先我们先来了解一下跨域共享cookie的使用场景,我们一般都是在什么情况下需要用到跨域共享cookie。这也就是错新网今天为什么要给大家写这篇文章的前提原因。

织梦的跨域共享场景分享

用户在浏览器上打开你的主站(www.cuoxin.com)登录会员,然后浏览我们的子站点手机站(m.cuoxin.com)或者商城站(shop.cuoxin.com)时不需要重新登录会员,实现跨域共享cookie

织梦跨域共享cookie的BUG修复

织梦跨域共享cookie是通过dedeajax2.js这个JS来实现的,修改起来也不是很麻烦,但是如果有不喜欢改的小伙伴可以直接下载织梦模板网修改好的/include/dedeajax2.js 覆盖到你网站include文件夹里

链接: https://pan.baidu.com/s/1V0tgn_EcOFbrddaUqF72ug&shfl=shareset 提取码: 5g3v 

上面是懒人包的下载,有些童鞋喜欢自己操作的,就跟随错新网一起来动手吧。打开 /include/dedeajax2.js 找到

DedeXHTTP = new XMLHttpRequest();

在它的下面加入

DedeXHTTP.withCredentials = true;

继续找到

DedeXHTTP.open("POST", purl, true);

在它的下面加入

DedeXHTTP.withCredentials = true;

继续找到

DedeXHTTP.open("GET", purl, true);

在它的下面加入

DedeXHTTP.withCredentials = true;

继续找到

DedeXHTTP.open("GET", purl, false);

在它的下面加入

DedeXHTTP.withCredentials = true;

然后保存好JS。覆盖原来的JS。

织梦跨域共享cookie的使用教程

1、后台-系统-系统配置参数-核心设置-跨域共享cookie的域名,填上

.cuoxin.com

注意有个英文小数点  .

织梦系统如何实现跨域共享cookie的BUG修复以及使用教程

如上图所示。

然后保存修改,接着你可能会出现后台登录时提示验证码错误,但是你填的验证码明明是对的,那有可能你的织梦程序不是最新的,你需要替换官方最新版的这2个文件。

提示:替换前记得先备份你的这2个文件,再替换官方的进来。

/include/common.inc.php

/include/vdimgck.php

2、启用 CORS 来解决浏览器跨域出现的拦截跨源问题

织梦系统如何实现跨域共享cookie的BUG修复以及使用教程

解决浏览器跨域拦截跨源有2种方法

第1种,直接在ajax请求的php文件里加入

header("Access-Control-Allow-Credentials:true");header("Access-Control-Allow-Origin:http://m.cuoxin.com");

例如,获取会员登录状态是这个文件 http://www.cuoxin.com/member/ajax_loginsta.php

织梦系统如何实现跨域共享cookie的BUG修复以及使用教程

如果你有多个ajax获取文件,也需要加入这2行代码。

第2种、在网站环境配置里加入(注意:使用第1种就不要再去操作第2种了)

2-1) Apache环境的小伙伴在conf配置文件里加入

Header set Access-Control-Allow-Origin "*"

织梦系统如何实现跨域共享cookie的BUG修复以及使用教程

2-2) Nginx环境的小伙伴在配置文件里加入

add_header Access-Control-Allow-Origin *;

织梦系统如何实现跨域共享cookie的BUG修复以及使用教程

2-3) iis环境的小伙伴添加如下标头

Access-Control-Allow-Origin:*

织梦系统如何实现跨域共享cookie的BUG修复以及使用教程

打开IIS,找到“HTTP响应标头”点进去,在右侧可以看到添加,然后添加如下标头即可

织梦系统如何实现跨域共享cookie的BUG修复以及使用教程

3、在子域名的模板中,有ajax获取会员登录状态数据的地方,文件路径要使用主域名的文件

例如

<script type="text/javascript" src="{dede:global.cfg_basehost/}/include/dedeajax2.js"></script><script type="text/javascript">    function CheckLogin(){      var taget_obj = document.getElementById('_userlogin');      myajax = new DedeAjax(taget_obj,false,false,'','','');      myajax.SendGet2("{dede:global.cfg_basehost/}/member/ajax_loginsta.php");      DedeXHTTP = null;    }</script>

注意:其中的{dede:global.cfg_basehost/}/include/dedeajax2.js是主域名文件。

完成。

以上就是织梦系统如何实现跨域共享cookie的BUG修复以及使用教程的全部内容,希望对大家的学习和解决疑问有所帮助,也希望大家多多支持错新网。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表