c# - 在 chrome 响应式模拟器中重定向更改用户代理
解决方案
您引用的问题与 .NET 服务器无关。它无法为浏览器返回用户代理字符串。用户代理字符串仅由浏览器设置。但是你的字符串被改变了。现在检查 Chrome (v95 x64)、Opera(在 Chromium v94 x64 上)、Edge (v95 x64) 和 FireFox (v94 x64)。对于重定向链接,我使用了 HTTP://google.com(是的,不是 HTTPS - 将 HTTPS 重定向为307 Inner redirect
)。所有用于速度和统一的初始用户代理都设置为相同的“iPhone 5/SE”。我的结果如下。
铬合金。
HTTP 请求以 phone 形式发送Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1
。
HTTPS 为Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
. 用户代理已更改。问题。你强调的同一个案例。
Opera(几乎是另一个 Chrome 版本)。HTTP 请求以电话形式发送。HTTPS 就像电话一样。没有用户代理更改。一切都按预期工作。
Edge(几乎是相同的 Chrome 版本)。与 Chrome 上的情况相同。叮!
FireFox(不同的引擎)。HTTP 不适用 - 使用的 HTTP/3 最初以 HTTPS 开头。这里不是一个例子。
Chromium 错误列表中存在类似的问题。但它不像你的。 https://bugs.chromium.org/p/chromium/issues/detail?id=1234461&q=User-agent%20string&can=2
无论如何,看起来您在 v95 上发现了 Chromium 问题。
我的问候!报告问题是您的权利。
作为一个选项,可以在服务器上使用新User-Agent Client Hints
标头: , , . 但这些扩展是新的。大多数大众现代浏览器都在使用它,但不是 Firefox 或 Safari。只需设置您的服务器以请求它们。如果客户端正在使用 UA 字符串,最好通过 JS 获取正确的值:、和.Sec-CH-UA*
Sec-CH-UA
Sec-CH-UA-Mobile
Sec-CH-UA-Platform
navigator.userAgent
navigator.appVersion
navigator.platform
计划在未来摆脱已经不明确的UA字符串。
推荐阅读
- node.js - 将 MongoDB 数据库视为 SQL 数据库文件(.mdf 和 .db 文件)
- java - java - 如何在java中的字符串中的特定模式之后添加新行
- python - Python如何通过单元测试检查内部功能
- node.js - 无法使用 Puppeteer 从表中刮取数据。它返回空数组
- reactjs - 反应 axios CORS 问题
- sql - 在多个 Oracle 数据库列表上执行选择的代码
- javascript - 如何以角度修复 findIndex
- ios - 如何在firebase中检查当前用户的名称
- javascript - 在angularjs中使用ng-include进行递归(在运行时更新对象,不反映子模板上的更改)时失去范围
- c# - closedxml.report IEnumerable 如何垂直扩展而不是水平扩展