首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在音频请求中传递cookie/session id?

如何在音频请求中传递cookie/session id?
EN

Stack Overflow用户
提问于 2020-10-23 09:28:36
回答 1查看 385关注 0票数 0

我在想,如何才能将我的会话Id从登录发送到flutter中的其他rest api调用。我在这里的情况是,我希望有一个登录屏幕和产品列表页面。我成功地开发了带身份验证的登录页面。以下是代码片段

登录按钮:

代码语言:javascript
运行
AI代码解释
复制
 RaisedButton(
          onPressed: () {
            ApiProvider().userLogin().then((value) => {});
          },
          child: Text('Login'),
        )

ApiProiver.dart:

代码语言:javascript
运行
AI代码解释
复制
 Future userLogin() async {
   var options = Options(
    headers: {"Content-Type": "application/json"},
   );
  var body ={
   "jsonrpc" : "2.0",
   "params":{
    "login":"admin",
    "password":"admin",
    "db":"food_app"
  }
 };

 Response response = await dio.post('http://food_app.com/web/session/authenticate',options:options, 
 data: body);
 print("Response $response");
 final cookies = response.headers.map['set-cookie'];
 print("Cookie,$cookies");
}

输出:

代码语言:javascript
运行
AI代码解释
复制
  Response :

  {"jsonrpc": "2.0", 
    "id": null,
    "result": 
            {"uid": 2, 
             "is_system": true, 
             "is_admin": true, 
             "db": "food_app",   
            "name":  "Administrator", 
            "username": "admin", 
           "web.base.url": "http://food_app.com",
   }
 }

Cookie:

代码语言:javascript
运行
AI代码解释
复制
[session_id=d446d3ef6bd536ef8e0bf6f1c9ba3a40c92ccb99; Expires=Thu, 21-Jan-2021 08:59:42 
GMT; Max-Age=7776000; HttpOnly; Path=/]

Result is ok!!!!!!!!!!!!!!!

我从上面的代码中获得了cookies/会话id,现在我的问题是如何将会话id传递给下一个api调用

代码语言:javascript
运行
AI代码解释
复制
Future fetchProducts() async {
 var options = Options(
   headers: {"Content-Type": "application/json"},
  );
  var body =
     {
       "jsonrpc" : "2.0",
      "params":{ }
     };
  Response response = await dio.post('http://food_app.com/api/get_products',options: options, data:body );
  }

以下是接受上述接口调用:slight_smile的python测试脚本:

代码语言:javascript
运行
AI代码解释
复制
 odoo_url = "https://food_app.com"

 headers = {'Content-type': 'application/json'}

 myobj = {"jsonrpc":"2.0","params":{'db':'food_app','login':'admin','password':'admin'}}
     
 session_details = requests.get(url=odoo_url + '/web/session/authenticate', data=json.dumps(myobj), 
                                  headers=headers)
 session_id = str(session_details.cookies.get('session_id'))
 print("Session id")
 print(session_id)
 cookies = {
 'session_id': session_id
}    

#列出所有产品GET方法

代码语言:javascript
运行
AI代码解释
复制
 url_get = 'http://food_app.com/api/get_products'
 headers = {'Content-type': 'application/json'}
get_products = requests.get(url_get, cookies=cookies)
json_data = json.loads(get_products.text)
for product in json_data['response']:
  print(product['name'])

上面的python代码命中api并返回正确的响应

代码语言:javascript
运行
AI代码解释
复制
Session :
8a1f03ff94459c6a30d3be6cbdf3e8ca9b1ee23c

Product Names:
Calamari & Rice in Orange Souce
Chicken Wings in Buffalo Sauce
Mixed Vegatables, Paprika & Chips - Dish 1
New York Strip Steak  
Roasted Brussels Sprout Salad
Salmon in Carrot Souce
Vegetable Salad with Avocado & Rice

请编辑我的fetchProducts()方法,以便通过会话从api获取响应。

EN

回答 1

Stack Overflow用户

发布于 2021-04-02 06:00:30

您需要使用cookie manager

示例

代码语言:javascript
运行
AI代码解释
复制
import 'package:dio/dio.dart';
import 'package:dio_cookie_manager/dio_cookie_manager.dart';
import 'package:cookie_jar/cookie_jar.dart';

main() async {
  var dio =  Dio();
  var cookieJar=CookieJar();
  dio.interceptors.add(CookieManager(cookieJar));
  
  // first request, and save cookies (CookieManager do it).
  await dio.get("https://baidu.com/");
  
  // Print cookies
  // print(await cookieJar.loadForRequest(Uri.parse("https://baidu.com/")));

  // second request with the cookies
  await dio.get("https://baidu.com/");
  ... 
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64497445

复制
相关文章
跨域请求传递Cookie问题
前后端完全分离的项目,前端使用Vue + axios,后端使用SpringMVC,容器为Tomcat。 使用CORS协议解决跨域访问数据限制的问题,但是发现客户端的Ajax请求不会自动带上服务器返回的Cookie:JSESSIONID。 导致每一个Ajax请求在服务端看来都是一个新的请求,都会在服务端创建新的Session(在响应消息头中设置Set-Cookie:JSESSIONID=xxx)。 而在项目中使用了Shiro框架,用户认证信息是放在Session中的,由于客户端不会把JSESSIONID返回给服务器端,因此使用Session策略存放数据的方式不可用。
编程随笔
2019/09/11
3.5K0
接口测试如何在post请求中传递文件
2.找到body这个选项,输入文件对应的参数名,在然后把参数名后面的text选择为file。
sik1
2022/06/21
3.5K0
深入解析Cookie和Session的请求区别
在Web开发中,Cookie和Session是常用的会话管理机制。它们都可以用于在客户端和服务器之间传递数据,但却有着不同的工作原理和使用场景。本文将深入探讨Cookie和Session的请求区别以及对应的使用场景,帮助读者理解并正确应用这两种会话管理方式。
疯狂的KK
2023/09/22
3090
深入解析Cookie和Session的请求区别
Cookie & Session
HTTP 协议是一种无状态协议,即每次服务端接收到客户端的请求时,都是一个全新的请求,服务器并不知道客户端的历史请求记录。Cookie 和 Session 的主要目的就是为了弥补 HTTP 的无状态特性。
小简
2023/01/04
8810
Cookie & Session
Cookie and Session
Cookie是一段不超过4KB的小型文本数据,由一个名称(Name)、一个值(Value)和其它几个用于控制Cookie有效期、安全性、使用范围的可选属性组成。Cookie是客户端会话技术,数据保存在客户端。
收心
2022/01/17
5030
Cookie、Session
无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不会直接影响后面的请求响应情况。
py3study
2020/01/19
1K0
Cookie、Session
PHP中cookie与session详解
cookie 常用于识别用户。cookie 是一种服务器留在用户计算机上的小文件。每当同一台计算机通过浏览器请求页面时,这台计算机将会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。
行云博客
2020/07/13
1.1K0
flask中cookie和session介绍
在网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。cookie的出现就是为了解决这个问题,第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当前用户是哪个了。cookie存储的数据量有限,不同的浏览器有不同的存储大小,但一般不超过4KB。因此使用cookie只能存储一些小量的数据。
AiDBA宝典
2019/09/29
5200
flask中cookie和session介绍
nodejs中cookie、session的使用
因为http会话的无状态性,为了标记用户的登录状态,便出现了cookie。cookie分为很多种,有普通cookie、签名cookie、json cookie等,这里主要记录下在express应用中如
用户1141560
2017/12/26
3.6K0
Flask中的cookie和session
详细可以参照:https://www.cnblogs.com/pythonywy/p/11594420.html
小小咸鱼YwY
2020/06/19
5290
cookie和session
一:会话技术简介 存储客户端的状态。例如:用户在商城上面购物,服务端如何针对不同的客户端进行信息的存储呢?访问的信息存放在哪里?因为http协议是无状态的,所以客户端访问服务器的时候服务器并不知道是哪个客户端,所以需要会话技术进行识别客户端的装态。说白了会话技术就是使服务器能够记住客户端的状态(区分客户端)。 会话技术:浏览器打开访问其中的某个站点,直到浏览器关闭的整个过程,称为一次会话。会话技术就是记录客户端在这次会话中的数据和状态。会话技术分为cookie和session,session和cookie的
用户2146856
2018/05/18
8370
cookie和session
cookie主要完成同一会话中不同请求响应间数据传输的任务。cookie是一种消息载体,是在服务器端生成的,首次会以响应报文中传输到客户端,客户端浏览器会将cookie中的内容保存到本地磁盘上,之后再向服务器发送请求时会带着cookie,从而完成多次请求响应中的消息传输问题。
你的益达
2020/10/15
5700
cookie和session
cookie和session
一:会话技术简介 存储客户端的状态。例如:用户在商城上面购物,服务端如何针对不同的客户端进行信息的存储呢?访问的信息存放在哪里?因为http协议是无状态的,所以客户端访问服务器的时候服务器并不知道是哪个客户端,所以需要会话技术进行识别客户端的装态。说白了会话技术就是使服务器能够记住客户端的状态(区分客户端)。 会话技术:浏览器打开访问其中的某个站点,直到浏览器关闭的整个过程,称为一次会话。会话技术就是记录客户端在这次会话中的数据和状态。会话技术分为cookie和session,session和cookie的
用户2146856
2018/06/26
9020
Cookie与Session
会话跟踪是Web程序中常用的技术,HTTP协议是无状态的,确定用户身份就需要跟踪用户的整个会话。最常用的会话跟踪是使用Cookie与Session,简单来说Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。
WindRunnerMax
2020/08/27
5430
Cookie和Session
cookie Cookie的由来 大家都知道HTTP协议是无状态的。 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不会直接影响后面的请求响应情况。 一句有意思的话来描述就是人生只如初见,对服务器来说,每次的请求都是全新的。 状态可以理解为客户端和服务器在某次会话中产生的数据,那无状态的就以为这些数据不会被保留。会话中产生的数据又是我们需要保存的,也就是说要“保持状态”。因此cookie就是在这样一个场景下诞生。 什么是co
人生不如戏
2018/04/12
9700
Cookie和Session
Cookie和Session
总结:为control类的方法增加一个HttpServletRequest参数,通过request.getCookies()取得cookie 数组。然后再循环遍历数组即可
摸鱼的G
2023/02/22
4420
Cookie和Session
Cookie是服务器通知客户端保存键值对的一种技术;保存在客户端 客户端有了Cookie后,每次请求都发送给服务器; 每个Cookie的大小不能超过4kb
技术交流
2022/11/18
4880
Cookie和Session
Session Cookie Token
早期的互联网相当于一个文件服务器,访问服务器,只是提供了文件浏览功能。每次请求都是一个 HTTP 协议请求,服务器并不知道是谁访问了互联网,后来随着电子商务,论坛等网站的发展,有了用户登录,服务器需要知道是谁登录了网站。怎么解决这个问题呢?
王小明_HIT
2019/08/13
6210
cookie和session
cookie: 1. `cookie`出现的原因:在网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。cookie的出现就是为了解决这个问题,第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当前用户是哪个了。 2. 如果服务器返回了`cookie`给浏览器,那么浏览器下次再请求
用户1173509
2018/01/17
7080
cookie、session、分页
无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不会直接影响后面的请求响应情况。
py3study
2020/02/10
2.1K0

相似问题

如何在curl请求中传递PHP_session_id

10

登录脚本、session_id、cookie

10

session_id、cookie、会话管理

10

$_SESSION['session_id']总是等于$_COOKIE['PHPSESSID']吗?

15

如何在curl请求中传递cookie

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档