前后端分离被越来越多的公司重视利用。然后带来的最棘手的问题就是。用户信息应怎样保存。

一、场景描写叙述

以Java为后台,AngluarJS做前端为例进行描写叙述:当用户在界面登录时。需把用户信息(如uid)存入后台JAVA系统中,用于前后端所处主域可能不同。全部採用常规的session进行保存已不能满足其业务场景。

解决方式:採用cookie进行存储,当cookie被禁止后採用浏览器本地存储localstorage。

採用cookie进行存储时,会出现跨域问题(即AngularJS訪问JAVA端,需携带信息存入到JAVA服务端cookie中)。

二、AngularJS实例

AngularJS:

<pre name="code" class="javascript">function getAdustryController($scope,$http){
$http.post('http://localhost/ajax/getAllIndustryCategoty.pt',{languageColumn:'name_eu'},{'withCredentials':true}).success(function(data){
$scope.industries = data;
});
}

JAVA:

public String execute(){
/* 要存入的cookie信息 */
Cookie cookie = new Cookie("test_test","321");
cookie.setMaxAge(3600);
response.addCookie(cookie); /* This is a part of security, you cannot do that. If you want to allow credentials then your Access-Control-Allow-Origin must not use *. You will have to specify the exact domain. */
response.setHeader("Access-Control-Allow-Origin", "http://test.domain.cn"); //请求源
response.setHeader("Access-Control-Allow-Methods","POST"); //请求方式POST, GET, OPTIONS
response.setHeader("Access-Control-Max-Age", "3600"); //有效期
response.setHeader("Access-Control-Allow-Headers", "Content-Type, *"); //请求头类型
response.setHeader("Access-Control-Allow-Credentials","true"); //是否支持cookie跨域 SiteHandlerAction SiteHandler = (SiteHandlerAction) BeansFactory.getBean(SiteHandlerAction.class);
List<IndustryCategory> list = SiteHandler.getAllIndustryCategory(); //全部的分类集合
JSONArray jsonArray = JSONArray.fromObject(list); //将list转为json
String json = jsonArray.toString(); //转为json字符串
//将字符串写进输出流
try {
PrintWriter write = response.getWriter();
write.print(json);
write.close();
} catch (IOException e) {
e.printStackTrace();
}
return NONE;
}

三、Jquery实例:

$.ajax("http://localhost/ajax/getAllIndustryCategoty.pt",{
type:"POST",
data:{languageColumn:'name_eu'},
xhrFields:{withCredentials: true},
crossDomain::true,
success:function(data, status, xhr){}
});

四、经常使用浏览器查看全部cookie信息方式

Google浏览器查看本机全部cookie信息:依次点击设置--高级选项--内容设置--cookies--选择“显示cookies和其它站点数据”button就能够看到了

firefox浏览器查看本机全部cookie信息:依次点击设置--选项--隐私--移除单个Cookie

五、header信息:

Access-Control-Allow-Origin: <origin> | *  授权的源控制
Access-Control-Max-Age: <delta-seconds> 授权的时间
Access-Control-Allow-Credentials: true | false 控制是否开启与Ajax的Cookie提交方式
Access-Control-Allow-Methods: <method>[, <method>]* 同意请求的HTTP Method
Access-Control-Allow-Headers: <field-name>[, <field-name>]* 控制哪些header能发送真正的请求    

參考文章:http://my.oschina.net/blogshi/blog/303758

AngularJS实现cookie跨域的更多相关文章

  1. 解决cookie跨域访问

    一.前言 随着项目模块越来越多,很多模块现在都是独立部署.模块之间的交流有时可能会通过cookie来完成.比如说门户和应用,分别部署在不同的机器或者web容器中,假如用户登陆之后会在浏览器客户端写入c ...

  2. cookie 跨域访问的解决方案

    Cookie 同域单点登录  最近在做一个单点登录的系统整合项目,之前我们使用控件实现单点登录(以后可以介绍一下).但现在为了满足客户需求,在不使用控件情况下实现单点登录,先来介绍一下单点登录.    ...

  3. asp.net关于Cookie跨域(域名)的问题

    Cookie是一个伟大的发明,它允许Web开发者保留他们的用户的登录状态.但是当你的站点有一个以上的域名时就会出现问题了.在Cookie规范上 说,一个cookie只能用于一个域名,不能够发给其它的域 ...

  4. 基于Cookie跨域的单点登录问题

    由于项目中,需要用的单点登录,主要的思路是:系统1:用户名密码-->写入Cookie-->其他系统读取Cookie. 1.在同一个服务器下的Cookie共享 @Component(&quo ...

  5. golang-在gin中cookie跨域设置(配合ajax)

    1.当我在golang中,在前后端分离的情况下使用cookies时发现,跨域没有被允许.代码如下: func AccessJsMiddleware() gin.HandlerFunc { return ...

  6. nginx处理cookie跨域

    今天在部署公司项目的时候碰到一个问题 项目地址是xxx.xx.xx.122:7480 项目A后台请求地址为xxx.xx.xx.123:8080/data-sso 开始nginx配置是 server { ...

  7. 解决前后端分离后的Cookie跨域问题

    一. 前端Ajax关键配置 $.ajax({ type: "post", url: xxx, data: xxx, contentType: 'application/json', ...

  8. cookie 跨域解决方法

    1.Nginx 正向和反向代理的区别 正向代理和反向代理的区别:正向代理隐藏真实客户端,反向代理隐藏真实服务端,图示: 2.cookie跨域问题 因为cookie存在跨域问题,其中一个解决方法是,设置 ...

  9. Iframe和Frame中实现cookie跨域的方法(转载)

    在Iframe和Frame中默认是不支持Cookie跨域的,但通过设置P3P协议相关的响应头可以解决这一问题.关于p3p协议: P3P: Platform for Privacy Preference ...

随机推荐

  1. hpuoj--校赛--2015年的第一场雪(暴力)

    问题 D: 感恩节KK专场--2015年的第一场雪 时间限制: 1 Sec  内存限制: 128 MB 提交: 865  解决: 76 [提交][状态][讨论版] 题目描述 下雪了,KK学长站在三教门 ...

  2. Hive框架基础(一)

    * Hive框架基础(一) 一句话:学习Hive有毛用? 那么解释一下 毛用: * 操作接口采用类SQL语法,提供快速开发的能力(不会Java也可以玩运算) * 避免了去写MapReduce,减少开发 ...

  3. 一些 <link> 标记分享

    <link rel="alternate" media="handheld" href="#" /> <link rel= ...

  4. php--防止DDos攻击代码

    <?php //查询禁止IP $ip =$_SERVER['REMOTE_ADDR']; $fileht=".htaccess2"; if(!file_exists($fil ...

  5. Debian9.5 系统配置持久化iptables规则

    RedHat和SUSE系列下有比较好用的iptables管理工具,可以像控制服务进程一样来对防火墙进行管理及控制,Debian系发行版默认不开启iptables,当然也没有与之相关的能直接管理的工具了 ...

  6. 转载 :Linux有问必答:如何在Debian或Ubuntu上安装完整的内核源码

    http://linux.cn/article-5015-1.html 问题:我需要为我的Debian或Ubuntu下载并安装完整树结构的内核源码以供编译一个定制的内核.那么在Debian或Ubunt ...

  7. PatentTips - Supporting heterogeneous virtualization

    BACKGROUND A virtual machine (VM) architecture logically partitions a physical machine, such that th ...

  8. 洛谷 P1293 班级聚会

    P1293 班级聚会 题目描述 毕业25年以后,我们的主人公开始准备同学聚会.打了无数电话后他终于搞到了所有同学的地址.他们有些人仍在本城市,但大多数人分散在其他的城市.不过,他发现一个巧合,所有地址 ...

  9. ArcGIS api for javascript——设置自定义范围和空间参考

    描述 这个示例展示了在创建地图时如果定义一个自定义的范围和空间参考. 在 ArcGIS JavaScript API的1.0和1.1版本,任何要使用的地图服务图层都需要和地图的空间参考一致.1.2版本 ...

  10. 试图切换控制addChildViewController、_transitionFromViewController

    试图切换能够用transitionFromViewController. 步骤: View Controller中能够加入多个sub view,在须要的时候显示出来: 能够通过viewControll ...