From f121cb0af95395714d0300c0093108405ede5587 Mon Sep 17 00:00:00 2001 From: jiadong Date: Thu, 12 Feb 2026 15:18:44 +0800 Subject: [PATCH 1/3] =?UTF-8?q?[200=5F48]=20=E8=AF=B7=E6=B1=82=E5=A4=84?= =?UTF-8?q?=E6=94=B9=E9=80=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- devel/200_48.md | 26 ++++++++++++++++++++++++++ src/Plugins/Qt/QTMOAuth.cpp | 5 +++++ src/Plugins/Qt/qt_tm_widget.cpp | 2 ++ src/System/Files/web_files.cpp | 6 +++--- 4 files changed, 36 insertions(+), 3 deletions(-) diff --git a/devel/200_48.md b/devel/200_48.md index 765abd1feb..baf5e0c744 100644 --- a/devel/200_48.md +++ b/devel/200_48.md @@ -8,6 +8,32 @@ ;;期望返回类似:469709a0db73706427292c7019d41d55f64de1d965367da4206d9d952849120e ``` +## 2026/02/12 请求处改造 +### What +1. 场景1: 用户认证 + - 用户登录/刷新 token 时携带设备信息 + - 涉及文件: src/Plugins/Qt/QTMOAuth.cpp + - handleAuthorizationCode(): 授权码换 token + - refreshToken(): 刷新 access_token + +2. 场景2: 获取用户信息 + - 登录成功后拉取用户详情时携带标识 + - 涉及文件: src/Plugins/Qt/qt_tm_widget.cpp + - fetchUserInfo(): 获取用户信息 API + +3. 场景3: 远程资源下载 + - 文档中 远程文件时携带标识 + - 涉及文件: src/System/Files/web_files.cpp + - get_from_web(): HTTP 资源下载 + +4. 场景4: 浏览器打开链接 + - 暂不处理(外部浏览器无法控制 HTTP header) + +5. 改动总结 + - 新增 3 个文件的 HTTP header 注入 + - 使用统一的 stem_user_agent() 和 stem_device_id() + - 共新增约 10 行代码 + ## 2026/02/12 降低调用损耗 ## 2026/02/11 添加 User-Agent and Device ID 函数 diff --git a/src/Plugins/Qt/QTMOAuth.cpp b/src/Plugins/Qt/QTMOAuth.cpp index 669f9c2cb7..b3b886b1e8 100644 --- a/src/Plugins/Qt/QTMOAuth.cpp +++ b/src/Plugins/Qt/QTMOAuth.cpp @@ -11,6 +11,7 @@ #include "QTMOAuth.hpp" #include "qt_utilities.hpp" +#include "tm_sys_utils.hpp" #include "scheme.hpp" #include @@ -178,6 +179,8 @@ QTMOAuth::handleAuthorizationCode (const QString& code) { QNetworkRequest request (url); request.setHeader (QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); + request.setRawHeader ("User-Agent", to_qstring (stem_user_agent ()).toUtf8 ()); + request.setRawHeader ("X-Device-Id", to_qstring (stem_device_id ()).toUtf8 ()); QNetworkAccessManager* manager= new QNetworkAccessManager (this); QNetworkReply* reply= @@ -252,6 +255,8 @@ QTMOAuth::refreshToken () { QNetworkRequest request (url); request.setHeader (QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); + request.setRawHeader ("User-Agent", to_qstring (stem_user_agent ()).toUtf8 ()); + request.setRawHeader ("X-Device-Id", to_qstring (stem_device_id ()).toUtf8 ()); // 发送刷新请求 QNetworkAccessManager* manager= new QNetworkAccessManager (this); diff --git a/src/Plugins/Qt/qt_tm_widget.cpp b/src/Plugins/Qt/qt_tm_widget.cpp index 75e4caa6a2..eabd27090e 100644 --- a/src/Plugins/Qt/qt_tm_widget.cpp +++ b/src/Plugins/Qt/qt_tm_widget.cpp @@ -1994,6 +1994,8 @@ qt_tm_widget_rep::fetchUserInfo (const QString& token) { request.setUrl (QUrl (to_qstring (userInfoUrl))); request.setRawHeader ("Authorization", to_qstring (auth_str).toUtf8 ()); request.setRawHeader ("Content-Type", "application/json"); + request.setRawHeader ("User-Agent", to_qstring (stem_user_agent ()).toUtf8 ()); + request.setRawHeader ("X-Device-Id", to_qstring (stem_device_id ()).toUtf8 ()); // 发送请求 QNetworkReply* reply= manager->get (request); diff --git a/src/System/Files/web_files.cpp b/src/System/Files/web_files.cpp index f9c904fd29..d4557be8d9 100644 --- a/src/System/Files/web_files.cpp +++ b/src/System/Files/web_files.cpp @@ -27,6 +27,7 @@ #ifdef QTTEXMACS #include #include +#include "tm_sys_utils.hpp" #endif using lolly::io::http_head; @@ -140,9 +141,8 @@ get_from_web (url name) { url tmp = url_temp (suf); http_headers headers = http_headers (); - headers ("User-Agent")= string ("Mogan/") * XMACS_VERSION * " (" * - get_pretty_os_name () * "; " * - get_current_cpu_arch () * ")"; + headers ("User-Agent")= stem_user_agent(); + headers ("X-Device-Id")= stem_device_id (); lolly::io::download (name, tmp, headers); if (DEBUG_IO) { debug_io << "Download from " << name << "=> " << tmp << LF; From 3e5c3109fa2d4a778dccc6c94720ead89a5bb38d Mon Sep 17 00:00:00 2001 From: jiadong Date: Thu, 12 Feb 2026 15:19:46 +0800 Subject: [PATCH 2/3] format --- src/Plugins/Qt/QTMOAuth.cpp | 14 +++++++++----- src/Plugins/Qt/qt_tm_widget.cpp | 6 ++++-- src/System/Files/web_files.cpp | 8 ++++---- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/Plugins/Qt/QTMOAuth.cpp b/src/Plugins/Qt/QTMOAuth.cpp index b3b886b1e8..db10026f7d 100644 --- a/src/Plugins/Qt/QTMOAuth.cpp +++ b/src/Plugins/Qt/QTMOAuth.cpp @@ -11,8 +11,8 @@ #include "QTMOAuth.hpp" #include "qt_utilities.hpp" -#include "tm_sys_utils.hpp" #include "scheme.hpp" +#include "tm_sys_utils.hpp" #include @@ -179,8 +179,10 @@ QTMOAuth::handleAuthorizationCode (const QString& code) { QNetworkRequest request (url); request.setHeader (QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); - request.setRawHeader ("User-Agent", to_qstring (stem_user_agent ()).toUtf8 ()); - request.setRawHeader ("X-Device-Id", to_qstring (stem_device_id ()).toUtf8 ()); + request.setRawHeader ("User-Agent", + to_qstring (stem_user_agent ()).toUtf8 ()); + request.setRawHeader ("X-Device-Id", + to_qstring (stem_device_id ()).toUtf8 ()); QNetworkAccessManager* manager= new QNetworkAccessManager (this); QNetworkReply* reply= @@ -255,8 +257,10 @@ QTMOAuth::refreshToken () { QNetworkRequest request (url); request.setHeader (QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); - request.setRawHeader ("User-Agent", to_qstring (stem_user_agent ()).toUtf8 ()); - request.setRawHeader ("X-Device-Id", to_qstring (stem_device_id ()).toUtf8 ()); + request.setRawHeader ("User-Agent", + to_qstring (stem_user_agent ()).toUtf8 ()); + request.setRawHeader ("X-Device-Id", + to_qstring (stem_device_id ()).toUtf8 ()); // 发送刷新请求 QNetworkAccessManager* manager= new QNetworkAccessManager (this); diff --git a/src/Plugins/Qt/qt_tm_widget.cpp b/src/Plugins/Qt/qt_tm_widget.cpp index eabd27090e..1c16cf6c35 100644 --- a/src/Plugins/Qt/qt_tm_widget.cpp +++ b/src/Plugins/Qt/qt_tm_widget.cpp @@ -1994,8 +1994,10 @@ qt_tm_widget_rep::fetchUserInfo (const QString& token) { request.setUrl (QUrl (to_qstring (userInfoUrl))); request.setRawHeader ("Authorization", to_qstring (auth_str).toUtf8 ()); request.setRawHeader ("Content-Type", "application/json"); - request.setRawHeader ("User-Agent", to_qstring (stem_user_agent ()).toUtf8 ()); - request.setRawHeader ("X-Device-Id", to_qstring (stem_device_id ()).toUtf8 ()); + request.setRawHeader ("User-Agent", + to_qstring (stem_user_agent ()).toUtf8 ()); + request.setRawHeader ("X-Device-Id", + to_qstring (stem_device_id ()).toUtf8 ()); // 发送请求 QNetworkReply* reply= manager->get (request); diff --git a/src/System/Files/web_files.cpp b/src/System/Files/web_files.cpp index d4557be8d9..6fd9f19e7e 100644 --- a/src/System/Files/web_files.cpp +++ b/src/System/Files/web_files.cpp @@ -25,9 +25,9 @@ #include #ifdef QTTEXMACS +#include "tm_sys_utils.hpp" #include #include -#include "tm_sys_utils.hpp" #endif using lolly::io::http_head; @@ -139,9 +139,9 @@ get_from_web (url name) { } } - url tmp = url_temp (suf); - http_headers headers = http_headers (); - headers ("User-Agent")= stem_user_agent(); + url tmp = url_temp (suf); + http_headers headers = http_headers (); + headers ("User-Agent") = stem_user_agent (); headers ("X-Device-Id")= stem_device_id (); lolly::io::download (name, tmp, headers); if (DEBUG_IO) { From 7d9627a6faf6ff2e79ee5bd02f933adb18daac42 Mon Sep 17 00:00:00 2001 From: jiadong Date: Thu, 12 Feb 2026 15:26:33 +0800 Subject: [PATCH 3/3] fix --- devel/200_48.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devel/200_48.md b/devel/200_48.md index baf5e0c744..6be1cfe674 100644 --- a/devel/200_48.md +++ b/devel/200_48.md @@ -8,7 +8,7 @@ ;;期望返回类似:469709a0db73706427292c7019d41d55f64de1d965367da4206d9d952849120e ``` -## 2026/02/12 请求处改造 +## 2026/02/12 http请求的请求头优化 ### What 1. 场景1: 用户认证 - 用户登录/刷新 token 时携带设备信息