目前的项目中,使用到了fineuploader 这个纯html5上传组件,在开发过程中将上传服务单独放置在特定子域下.登录cookie设置的domain 是在根域下,在后端代码中进行用户登录检测,发现总会被重定向302到未登录页面,排查之后发现是ajax xhr请求中未带cookie造成的
网上大概搜了下,
写道
原生ajax请求方式:
var xhr = new XMLHttpRequest();
xhr.open("POST", "http://xxxx.com/demo/b/index.php", true);
xhr.withCredentials = true; //支持跨域发送cookies
xhr.send();
jquery的ajax的post方法请求:
$.ajax({
type: "POST",
url: "http://xxx.com/api/test",
dataType: 'jsonp',
xhrFields: {
withCredentials: true
},
crossDomain: true,
success:function(){
},
error:function(){
}
})
服务器端设置:
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Origin: http://www.xxx.com");
var xhr = new XMLHttpRequest();
xhr.open("POST", "http://xxxx.com/demo/b/index.php", true);
xhr.withCredentials = true; //支持跨域发送cookies
xhr.send();
jquery的ajax的post方法请求:
$.ajax({
type: "POST",
url: "http://xxx.com/api/test",
dataType: 'jsonp',
xhrFields: {
withCredentials: true
},
crossDomain: true,
success:function(){
},
error:function(){
}
})
服务器端设置:
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Origin: http://www.xxx.com");
后端进行了相应的调整,前端这块因为涉及到 fineuploader,在其代码中简单搜索了下关键字 withCredentials,然后去官方看了下文档,存在 cors 的配置 http://docs.fineuploader.com/api/options.html#cors
在配置行中加入以下配置 就ok了
cors: { allowXdr: true,// 此参数目前不知道有啥用 expected: true, sendCredentials: true }
修改之后,问题解决.
希望有遇到相同问题的人可以借鉴
相关推荐
跨子域单点登录。ASP.NET身份验证信息跨域共享状态,身份验证信息存储在cooKie中
这就需要用到跨子域共享SESSION的技术。 在ASP.NET中实现跨子域共享SESSION,主要有以下几种方法: 1. **Cookie-Based Sharing**: 这是最常见的方法,通过设置Cookie的`Domain`属性来实现。将Session ID存储在...
这个问题主要源于浏览器对第三方cookie的严格限制,它们旨在保护用户的隐私,防止跨站点脚本攻击(XSS)。 Safari和Opera等浏览器遵循一种称为“同源策略”的安全机制,它限制了不同源之间的交互,包括读取cookie。...
本文实例讲述了PHP ajax跨子域的解决方案之document.domain+iframe。分享给大家供大家参考,具体如下: 对于主域相同,子域不同,我们可以设置相同的document.domain来欺骗浏览器,达到跨子域的效果。 例如:我们有...
因为网站系统的日益庞大,不同域名业务,甚至不同合作方网站的cookie可能或多或少需要进行共享使用,遇到这个情况的时候,大家一般想到的是使用登录中心分发cookie状态再进行同步进行解决,成本较高而且实施起来比较...
然而,有时候为了实现特定功能,如单点登录(SSO)或资源共享,开发者会利用`document.domain`属性来打破这种限制,允许跨子域的通信。本节主要探讨的是如何利用`document.domain`技巧进行跨子域操作,并结合一个...
在Web开发中,Cookie是一种非常重要的技术,用于在客户端和服务器之间传递状态信息。Cookie的主要功能包括用户会话管理、个性化设置保存、跟踪用户行为等。在这个“cookie读写,子cookie”主题中,我们将深入探讨...
本文将详细介绍如何在父域中彻底删除子域信息,以解决这个问题。 首先,我们需要理解域控制器的角色和子域的关系。域是Active Directory的组织单位,用于管理网络中的用户、计算机和其他资源。子域是在主域下创建的...
跨子域localStorage(基于JSON-RPC 2.0协议) 用法 首先,您应该将xlocalstorage.html复制到您的根域和根路径。 回调样式 < script src =" bower_components/xlocalstorage/xlocalstorage.js " > </ ...
在IT领域,特别是Windows域环境的管理中,父子域的构建和管理是一个关键的环节。父子域架构允许在一个大型组织...同时,故障排查和处理技巧是日常运维中不可或缺的技能,有助于及时解决问题,保持域内资源的顺畅访问。
当用户第一次访问web应用系统1的时候,因为还没有登录,会被引导到认证中心进行登录;根据用户提供的登录信息,认证系统进行身份效验,如果通过效验,返回给用户一个认证的凭据;用户再访问别的web应用的时候就会将...
解决Django的cookie跨域问题,主要涉及到以下几个方面: 1. **CORS Middleware**:Django CORS Headers是一个第三方中间件,可以方便地管理允许跨域请求的域。安装该中间件后,通过配置`CORS_ORIGIN_WHITELIST`,...
总之,跨子域的Session共享是通过设置Cookie的域属性实现的,使得所有子域都能识别同一个Session ID,并通过统一的Session数据存储解决方案来确保数据的一致性。这在构建多子域的大型Web应用时尤其重要,能够提供...
子域的建立与配置是企业网络环境中常见的任务,它涉及到DNS服务器的管理和Windows域结构的扩展。下面将详细讲解这个过程。 首先,我们来看子域的建立步骤。创建子域通常是为了更好地组织和管理大型网络环境中的用户...
它的关键方法包括`getName()`(获取Cookie的名称)、`getValue()`(获取Cookie的值)、`setComment()`(设置Cookie的注释)、`setMaxAge()`(设置Cookie的有效期)以及`setPath()`和`setDomain()`(分别用于指定...
- `setDomain(String pattern)`:设置Cookie的适用域名,允许跨子域共享。 - `setMaxAge(int expiry)`:设置Cookie的存活时间(以秒为单位)。如果设置为负值,表示浏览器会话结束时删除Cookie;如果为0,会立即删除...
在子域中部署Exchange服务器是一项复杂的工作,可能会遇到多种问题,包括但不限于DNS配置、域控制器的设置、Exchange服务器角色的安装以及与父域的交互。本文将通过一个实验环境的构建,逐步解释如何在子域中成功...
在MATLAB中,进行工程计算或模拟时,...通过使用分段函数、图像处理、几何建模或专门的工具箱,我们可以有效地模拟和解决多材料问题。`subDemo.m`可能包含具体的实现细节,分析这个脚本将有助于你更好地理解这个过程。