Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions devel/200_48.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,32 @@
;;期望返回类似:469709a0db73706427292c7019d41d55f64de1d965367da4206d9d952849120e
```

## 2026/02/12 http请求的请求头优化
### 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: 远程资源下载
- 文档中 <include|https://...> 远程文件时携带标识
- 涉及文件: 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 函数
Expand Down
9 changes: 9 additions & 0 deletions src/Plugins/Qt/QTMOAuth.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
#include "QTMOAuth.hpp"
#include "qt_utilities.hpp"
#include "scheme.hpp"
#include "tm_sys_utils.hpp"

#include <QtGui/qdesktopservices.h>

Expand Down Expand Up @@ -178,6 +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 ());

QNetworkAccessManager* manager= new QNetworkAccessManager (this);
QNetworkReply* reply=
Expand Down Expand Up @@ -252,6 +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 ());

// 发送刷新请求
QNetworkAccessManager* manager= new QNetworkAccessManager (this);
Expand Down
4 changes: 4 additions & 0 deletions src/Plugins/Qt/qt_tm_widget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1994,6 +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 ());

// 发送请求
QNetworkReply* reply= manager->get (request);
Expand Down
10 changes: 5 additions & 5 deletions src/System/Files/web_files.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
#include <lolly/io/http.hpp>

#ifdef QTTEXMACS
#include "tm_sys_utils.hpp"
#include <QApplication>
#include <QEventLoop>
#endif
Expand Down Expand Up @@ -138,11 +139,10 @@ 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 () * ")";
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) {
debug_io << "Download from " << name << "=> " << tmp << LF;
Expand Down