You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AngularJS 1.6中显式携带Cookie发送GET请求

解决AngularJS 1.6手动显式携带Cookie发送GET请求的问题

嘿,针对你这个手动显式带Cookie发请求的需求,我给你梳理了具体的实现方法,适配AngularJS 1.6的版本:

1. 直接在请求头里添加Cookie字段

你不需要依赖浏览器自动发送,直接在$http的配置里把Cookie头写进去就行——可以直接写死值,也可以从$cookies里取之前存好的JSESSIONID,示例代码如下:

// 记得在控制器里注入$cookies和$http这两个服务哦
angular.module('你的应用模块名').controller('你的控制器名', ['$cookies', '$http', function($cookies, $http) {
    // 先把JSESSIONID存到Cookie里(可选,如果你后续还要用到这个值的话)
    $cookies.put('JSESSIONID', 'lu5xxkdqgjk5qpv07ufhvln3');
    
    // 发送带显式Cookie的GET请求
    $http({
        url: "http://10.11.0.11:4440/api/21/projects",
        method: "GET",
        headers: {
            'Accept': 'application/json',
            // 重点:这里手动添加Cookie请求头
            'Cookie': 'JSESSIONID=' + $cookies.get('JSESSIONID')
            // 要是不想从$cookies取,直接写死也可以:'Cookie': 'JSESSIONID=lu5xxkdqgjk5qpv07ufhvln3'
        },
        // 划重点!如果是跨域请求,必须加这个配置,不然浏览器会拦着不让发Cookie
        withCredentials: true
    }).then(function(response) {
        // 请求成功后的处理逻辑
        console.log('搞定啦!返回的数据:', response.data);
    }).catch(function(error) {
        // 请求失败的话可以在这里排查问题
        console.error('哎呀请求失败了:', error);
    });
}]);

2. 几个必须注意的坑

  • 跨域的话服务器要配合:如果你的前端页面和API不在同一个域名下,服务器端必须配置Access-Control-Allow-Credentials: true,而且Access-Control-Allow-Origin不能设成*,得指定你前端的具体域名,不然浏览器会直接拒绝发送Cookie。
  • 多个Cookie怎么加:要是需要带多个Cookie,用分号加空格隔开就行,比如'Cookie': 'JSESSIONID=xxx; 另一个Cookie名=yyy'。
  • withCredentials不能忘:跨域场景下这个配置是刚需,它告诉浏览器“我要在跨域请求里带凭证(包括Cookie)”。

3. 为啥要手动发?

一般来说登录成功后浏览器会自动带Cookie,但如果你遇到这些场景,手动显式设置就很必要:

  • 跨域但服务器没配置好CORS凭证支持
  • 需要模拟不同用户的请求,手动指定特定的Cookie值
  • 浏览器的Cookie存储被禁用或者受限了

内容的提问来源于stack exchange,提问作者Anubha Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:10:32