思源如何发送带 Cookie 的请求?

本贴最后更新于 649 天前,其中的信息可能已经沧海桑田

关联 issues:提供类似 Obsidian requestUrl 的方法 · Issue #8702 · siyuan-note/siyuan (github.com)

本人非计算机专业,只零散的学习过 JavaScript 的基础语法,基础比较差,希望大佬们回答的时候可以附上链接,我去学习一下 🙏

使用场景:希望实现微信读书 Cookie 续期。需要在请求头携带带旧 Cookie,通过获取返回标头的 Set-Cookie 部分。

image.png

Obsidian 的插件 使用 requestUrl | Obsidian 插件开发文档 方法实现这个功能。

类似 fetch() 方法,使用 HTTP/HTTPS 请求 URL, 没有任何跨域限制。

export function requestUrl(request: RequestUrlParam | string): RequestUrlResponsePromise;

思源目前似乎没有类似的方法,我想知道怎么做才能实现我需要的效果。

做过以下尝试:

  1. 直接在 axios 的 header 设置 Cookie
import axios from "axios"; axios.get('https://weread.qq.com', { headers: { cookie: 'some cookie' }, withCredentials: true, })

结果:报错 Refused to set unsafe header "cookie"

  1. 在 fetch 请求设置 header
fetch('https://weread.qq.com', { method: 'GET', headers: {'Cookie': 'some cookie'}, redirect: 'follow', credentials: 'include' });

结果:Cookie 被过滤

image

  1. 使用 axios-cookiejar-support
import axios from 'axios'; import { wrapper } from 'axios-cookiejar-support'; import { CookieJar } from 'tough-cookie'; const jar = new CookieJar(my_cookie); const client = wrapper(axios.create({ jar })); await client.get('https://example.com');

结果:Cookie 被过滤

image

  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    730 引用 • 1278 回帖 • 1 关注
  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    25120 引用 • 103566 回帖 • 1 关注
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    9584 引用 • 43591 回帖 • 97 关注

相关帖子

被采纳的回答

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 88250 2

    浏览器环境下估计无法做到跨域,只能通过一个后端服务器转发请求,并且自己管理 Cookie。

    近期内核会提供一个正向代理接口 Issue #8724 · siyuan-note/siyuan 应该能满足这个需求。

  • 其他回帖
  • leolee 1 via Android

    浏览器环境应该是做不到,这个我记得 z(插件系统的作者)有 issue 要求过核心来提供这个转发功能,你可以去找一下那个 issue,我最近比较忙没有注意它有没有实现,还有有没有允许转发跨域的带 cookie 请求,如果实在不行的话你可能就只能配置一下插件的适配环境,避免 docker 用户安装了……

  • 如果要在网页端也能使用的话,可能办法就只有自己起一个服务转发请求(需要 electron 环境),或者要求核心给一个接口来转发了

    1 回复
  • 首先非常感谢您的回复,由于我对前端涉及的环境所知甚少,请允许我再解释一下我的需求,希望您能给出一些建议,谢谢!

    目前微信读书插件客户端的 cookie 我就是通过您说的这种方式获取的,发送请求通过请求头设置 accessToken 绕过不会发送带 cookie 的请求的限制。

    因为希望可以适配 docker、伺服还有手机端(我不清楚这几个应该算是什么环境,只知道不能用 require 引用 Electron 的 API)。

    Ob 微信读书插件是用 http-proxy-middleware 转发请求 对应提交。但是这个和您提到的 VSCode-Zhihu 用到的模块(前者是 express、后者是 request-promise)在使用社区 vite 插件模板打包时会报错。原因是使用 Node.js 模块,但 Vite 不会自动填充 Node.js 模块

    我完全不会用 vite,所以想试试能不能用浏览器或者没有打包问题的库(比如 axios)的功能实现我的需求,然后就碰到了帖子里的问题。

    2 回复
  • 查看全部回帖

推荐标签 标签

  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    59 引用 • 29 回帖 • 2 关注
  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    25120 引用 • 103566 回帖 • 1 关注
  • PHP

    PHP(Hypertext Preprocessor)是一种开源脚本语言。语法吸收了 C 语言、 Java 和 Perl 的特点,主要适用于 Web 开发领域,据说是世界上最好的编程语言。

    179 引用 • 408 回帖 • 490 关注
  • Notion

    Notion - The all-in-one workspace for your notes, tasks, wikis, and databases.

    10 引用 • 77 回帖 • 1 关注
  • 星云链

    星云链是一个开源公链,业内简单的将其称为区块链上的谷歌。其实它不仅仅是区块链搜索引擎,一个公链的所有功能,它基本都有,比如你可以用它来开发部署你的去中心化的 APP,你可以在上面编写智能合约,发送交易等等。3 分钟快速接入星云链 (NAS) 测试网

    3 引用 • 16 回帖 • 1 关注
  • OneNote
    1 引用 • 3 回帖
  • Oracle

    Oracle(甲骨文)公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989 年正式进入中国市场。2013 年,甲骨文已超越 IBM,成为继 Microsoft 后全球第二大软件公司。

    107 引用 • 127 回帖 • 344 关注
  • Jenkins

    Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。

    54 引用 • 37 回帖
  • Webswing

    Webswing 是一个能将任何 Swing 应用通过纯 HTML5 运行在浏览器中的 Web 服务器,详细介绍请看 将 Java Swing 应用变成 Web 应用

    1 引用 • 15 回帖 • 642 关注
  • Ant-Design

    Ant Design 是服务于企业级产品的设计体系,基于确定和自然的设计价值观上的模块化解决方案,让设计者和开发者专注于更好的用户体验。

    17 引用 • 23 回帖 • 1 关注
  • 生活

    生活是指人类生存过程中的各项活动的总和,范畴较广,一般指为幸福的意义而存在。生活实际上是对人生的一种诠释。生活包括人类在社会中与自己息息相关的日常活动和心理影射。

    230 引用 • 1454 回帖
  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 222 关注
  • 印象笔记
    3 引用 • 16 回帖
  • Ubuntu

    Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的 Linux 操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu 的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。

    127 引用 • 169 回帖 • 1 关注
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    556 引用 • 675 回帖
  • Facebook

    Facebook 是一个联系朋友的社交工具。大家可以通过它和朋友、同事、同学以及周围的人保持互动交流,分享无限上传的图片,发布链接和视频,更可以增进对朋友的了解。

    4 引用 • 15 回帖 • 442 关注
  • 又拍云

    又拍云是国内领先的 CDN 服务提供商,国家工信部认证通过的“可信云”,乌云众测平台认证的“安全云”,为移动时代的创业者提供新一代的 CDN 加速服务。

    20 引用 • 37 回帖 • 575 关注
  • SSL

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。

    70 引用 • 193 回帖 • 413 关注
  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 55 关注
  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    267 引用 • 666 回帖
  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    367 引用 • 1842 回帖
  • 游戏

    沉迷游戏伤身,强撸灰飞烟灭。

    181 引用 • 821 回帖
  • 小薇

    小薇是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动。

    由于 Smart QQ 从 2019 年 1 月 1 日起停止服务,所以该项目也已经停止维护了!

    34 引用 • 467 回帖 • 762 关注
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    315 引用 • 547 回帖 • 1 关注
  • 学习

    “梦想从学习开始,事业从实践起步” —— 习近平

    172 引用 • 516 回帖
  • SendCloud

    SendCloud 由搜狐武汉研发中心孵化的项目,是致力于为开发者提供高质量的触发邮件服务的云端邮件发送平台,为开发者提供便利的 API 接口来调用服务,让邮件准确迅速到达用户收件箱并获得强大的追踪数据。

    2 引用 • 8 回帖 • 494 关注