添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

20210906-14关于flutterweb获取cookie与发送http请求的区别

其实这是两件完全不同的事

获取cookie是:

当flutter运行在浏览器上时才会“进行操作”的

而http请求则是无论在什么时候都可以进行的操作

或者说

获取cookie或许需要flutter与浏览器之间进行交互

而http请求则是flutter与某个远程(或许是我自己的,也可以是某信,某度的)http服务器进行交互

似乎是两种完全不同的技术栈

不过又研读了如下文章:

发现似乎还是要先具体尝试一下,而且似乎我这个是直接跑在了浏览器上,所以不存在cookie的"持久化问题"

但是却存在其他问题:

其实他这里所提到的dio_cookie_manager组件的存在意义是:

首先他是为原生app准备的,因为原生app和浏览器不同,他在最开始是无法“接住”任何服务器发来的cookie缓存的, 因此原生app在post一个网页前,需要先有效化dio_cookie_manager这样才能让app获取到cookie

而对于网页app来说似乎业务逻辑就发生了根本的变化了,因为此时cookie已经存在于浏览器里边了,我需要做的其实是 让运行在浏览器上的flutter与浏览器进行通信,从而拿到cookie的具体值,然后携带这个具体值再去进行post等操作

因此根据我目前的实际情况来说,我并不需要用到 dio_cookie_manager与cookie_jar,而只需要用到负责处理post,get这些请求的dio即可

除非这些包能有实现与浏览器通信的方法

真正能实现我需求的其实是这篇文章:

其中的get-cookie部分

而这篇文章则解释了evaluateJavascript()的本质就是Flutter调用js:

这篇是篇好文章

可还是无法解决实际问题,真正的方法其实是更为底层的:

也就是如下:

import dart:html

====

关于反向代理的底层逻辑:

现在发现最终的重定向虽然没有让cookie违背path与domain原则,但是除了这两个原则之外还有第三个原则,那就是子目录原则:

比如 abc.com/test1/setcookie 中的cookie, abc.com/test2/getcookie 是无论如何也拿不到的,只有 abc.com/test1/test2/get 才能拿到

其实这个和path到时有些神似,但是区别在于 ”path虽然可以决定把cookie储存到哪里,但是不能决定(设置/修改)自己是谁

于是接下来,我就需要通过反向代理,把./testflutterx映射到./zw/testflutterx了

反向代理的底层逻辑可以这么理解:

先拿出一个真正希望被用户访问的路径(也就是 xxx.com/yyy 的某一个),映射给物理服务器上另一个web服务(端口)的网页目录路径,同时,这个首先被拿出的路径,以及子路径,相关路径文件就都失效了,因为它被“映射给别人了”然而被映射的路径还是可以使用的,这就是反向代理的底层逻辑。接下来我将开始进行相关的配置工作,和以往不同,这次映射和被映射的路径都会来自“真正希望被用户访问的路径”

20210911flutter的dio脑仁不累的教程:

另一篇比较不错的文章,初始化讲的很好:


错误码设计:

目前似乎必须区分一下错误类型了,不能一水的只返回错误失败

可以不暴露给前端微信的错误码,但是必须有自己的自定义错误码从而区分诸如:

c.v1.postuserinfo失败后,前端需要做的是进行wxoauth2redirect?还是展示失败页面告诉用户哪里出问题了

似乎对于设计逻辑上,我自己的错误码逻辑需要屏蔽掉wx的错误码逻辑,或者说一个系统只能存在一套错误码逻辑,不能出现如下思路:

c.JSON(http.StatusBadRequest, gin.H{
    "error":"操作失败",
    "code":"1234",
    "wxerrcode":wxerrcode(这个struct不该出现,同一系统不能出现两套错误码逻辑)
})

发布于 2021-09-14 10:01

文章被以下专栏收录