在 chrome 响应式模拟器中重定向更改用户代理

Posted

技术标签:

【中文标题】在 chrome 响应式模拟器中重定向更改用户代理【英文标题】:Redirect in chrome responsive simulator changing user agent 【发布时间】:2021-12-16 19:29:09 【问题描述】:

当我在 chrome 响应式模拟器中向返回 302 重定向的页面发出请求时,我看到一个带有不同用户代理字符串的新请求。

在这里您可以看到带有“android 7.1.1”的用户代理

对于 302 重定向后的下一个请求,用户代理字符串被更改。

【问题讨论】:

【参考方案1】:

您引用的问题与 .NET 服务器无关。它无法为浏览器返回用户代理字符串。 用户代理字符串仅由浏览器设置。但是你的字符串被改变了。 现在检查 Chrome (v95 x64)、Opera(在 Chromium v​​94 x64 上)、Edge (v95 x64) 和 FireFox (v94 x64)。 对于重定向链接,我使用了 HTTP://google.com(是的,不是 HTTPS - 将 HTTPS 重定向为307 Inner redirect)。所有用于速度和统一的初始用户代理都设置为相同的“iPhone 5/SE”。 我的结果如下。

铬。

HTTP 请求以电话 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 标头Sec-CH-UA*Sec-CH-UASec-CH-UA-MobileSec-CH-UA-Platform。但这些扩展是新的。大多数大众现代浏览器都在使用它,但不是 Firefox 或 Safari。只需设置您的服务器以请求它们。如果客户端正在使用UA字符串,最好通过JS获取正确的值:navigator.userAgentnavigator.appVersionnavigator.platform

计划在未来摆脱已经不明确的UA字符串。

【讨论】:

以上是关于在 chrome 响应式模拟器中重定向更改用户代理的主要内容,如果未能解决你的问题,请参考以下文章

设置 cookie 并在 express 中重定向

在烧瓶中重定向时丢弃响应正文

根据响应在 vue 中重定向

52 错误:www 未在 Edge/Chrome/Mobile 中重定向:`ERR_EMPTY_RESPONSE`

如何在 Django 中重定向(包括 URL 更改)?

在 Laravel 4 中重定向更改 Auth::check() 的状态