Angularjs之如何在跨域请求中传输Cookie的方法


Posted in Javascript onJune 01, 2018

一般情况我们在使用WebApi之类的技术时,都会遇到跨域的问题,这个只需要在服务端做一下处理即可。

如果这些GET或POST请求不需要传递Cookie数据的话,就没什么问题了,但如果需要,那么会发现 虽然已经处理了跨域请求的问题,但后台始终无法获取到Cookie。

跨域传输Cookie是需要后台和前台同时做相关处理才能解决的。

就好比一个握手会话,前台先表示,我的跨域请求是带有Cookie的;请求到了服务端,服务端表示可以接收跨域Cookie,成交(开始重新带着Cookie发起请求)

后台代码

Response.Headers.Add("Access-Control-Allow-Credentials", "true");

前台代码

$http.post("http://a.domain.com/Api/Product", { productId: 3 }, {
  withCredentials: true,
  params: { name: "Ray" },
  headers: {'Authorization':"这个不重要"}
}).success(function (data) {
  //TODO
});

这个是在单独的请求中设置,如果要在所有的请求中都应用该设置则要使用 $httpProvider

angular.module("app").config(function ($httpProvider) {
  $httpProvider.defaults.withCredentials = true;
  $httpProvider.defaults.headers.common['Authorization'] = "89757";
})

如果使用jQuery,则是这样子的

$.ajax({
  type: "POST",
  url: "http://a.domain.com/Api/Product",
  xhrFields: {
    withCredentials: true
  },
  success: function (data) {
    console.log(data)
  },
  error: function (data) {
    console.error(data)
  }
})

撇开Cookie跨域传输的问题,angularjs的跨域POST请求与jQuery有些区别:

jQuery跨域与本域的区别仅仅是请求头信息的变化;

angularjs跨域后,会变成两次请求,第一次的Request Method是OPTIONS,这里有个概念叫preflight,这里不谈。

第一次请求到服务器后,会针对请求的下面三项进行赋值

  1. Access-Control-Allow-Origin
  2. Access-Control-Allow-Methods
  3. Access-Control-Allow-Headers"

浏览器接收到返回信息后,会再次发送请求,这次的Request Method是POST,这回就跟普通本域请求一样了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js 数值项目的格式化函数代码
May 14 Javascript
利用javascript数组长度循环数组内所有元素
Dec 27 Javascript
flash遮住div问题的正确解决方法
Feb 27 Javascript
JavaScript中的Math.sin()方法使用详解
Jun 15 Javascript
详解ES6中的let命令
Apr 05 Javascript
vue实现选项卡及选项卡切换效果
Apr 24 Javascript
4个顶级JavaScript高级文本编辑器
Oct 10 Javascript
JavaScript实现shuffle数组洗牌操作示例
Jan 03 Javascript
Vue动态组件与异步组件实例详解
Feb 23 Javascript
js实现多张图片每隔一秒切换一张图片
Jul 29 Javascript
Swiper实现导航栏滚动效果
Oct 16 Javascript
在react-antd中弹出层form内容传递给父组件的操作
Oct 24 Javascript
React 使用browserHistory项目访问404问题解决
Jun 01 #Javascript
详解vue-router 命名路由和命名视图
Jun 01 #Javascript
node.js利用socket.io实现多人在线匹配联机五子棋
May 31 #Javascript
JS与jQuery实现ListBox上移,下移,左移,右移操作功能示例
May 31 #jQuery
微信小程序登录换取token的教程
May 31 #Javascript
Rollup处理并打包JS文件项目实例代码
May 31 #Javascript
手把手教你vue-cli单页到多页应用的方法
May 31 #Javascript
You might like
phpmyadmin安装时提示:Warning: require_once(./libraries/common.inc.php)错误解决办法
2011/08/18 PHP
PHP中4个加速、缓存扩展的区别和选用建议
2014/03/12 PHP
PHP实现抓取HTTPS内容
2014/12/01 PHP
php表单敏感字符过滤类
2014/12/08 PHP
PHP的Yii框架中创建视图和渲染视图的方法详解
2016/03/29 PHP
php数组遍历类与用法示例
2019/05/24 PHP
解决php扩展安装不生效问题
2019/10/25 PHP
javascript:;与javascript:void(0)使用介绍
2013/06/05 Javascript
javascript列表框操作函数集合汇总
2013/11/28 Javascript
JS弹出层单纯的绝对定位居中示例代码
2014/02/18 Javascript
JavaScript的ExtJS框架中数面板TreePanel的使用实例解析
2016/05/21 Javascript
js实现省份下拉菜单效果
2017/02/15 Javascript
Javascript继承机制详解
2017/05/30 Javascript
Vue.js图片预览插件使用详解
2018/08/27 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【矩形情况】
2018/12/13 Javascript
vue项目前端知识点整理【收藏】
2019/05/13 Javascript
关于微信小程序map组件z-index的层级问题分析
2019/07/09 Javascript
js实现一款简单踩白块小游戏(曾经很火)
2019/12/02 Javascript
Vue绑定用户接口实现代码示例
2020/11/04 Javascript
微信小程序实现购物车功能
2020/11/18 Javascript
vue element和nuxt的使用技巧分享
2021/01/14 Vue.js
pycharm 使用心得(二)设置字体大小
2014/06/05 Python
利用django如何解析用户上传的excel文件
2017/07/24 Python
Python 操作文件的基本方法总结
2017/08/10 Python
Python使用正则表达式过滤或替换HTML标签的方法详解
2017/09/25 Python
关于pandas的离散化,面元划分详解
2019/11/22 Python
详解HTML5 data-* 自定义属性
2018/01/24 HTML / CSS
德购商城:德国进口直邮商城
2017/06/13 全球购物
《青蛙看海》教学反思
2014/04/23 职场文书
大学生职业生涯规划大赛作品(精品)
2014/09/17 职场文书
学习群众路线的心得体会
2014/11/05 职场文书
2014年档案室工作总结
2014/12/01 职场文书
画展邀请函
2015/01/31 职场文书
2016自主招生校长推荐信范文
2015/03/23 职场文书
《唯一的听众》教学反思
2016/02/18 职场文书
铁拳制作人赞《铁拳7》老头环Mod:制作精良 但别弄了
2022/04/03 其他游戏