gpt4 book ai didi

php - 为什么 IE 用户代理字符串在 POST 表单上变化如此之大?

转载 作者:搜寻专家 更新时间:2023-10-31 21:14:15 27 4
gpt4 key购买 nike

我正在运行一个投票系统。 session key 部分使用浏览器用户代理字符串的哈希生成。一些用户遇到错误是因为奇怪的用户代理字符串更改,如下面的页面跟踪所示。

在每次页面加载开始时,在 PHP 中的以下庄园中检测用户代理。

function useragent()
{
static $user_agent = null;
if($user_agent === null)
{
$user_agent = getenv('HTTP_USER_AGENT');
if(empty($user_agent) === true)
{
$user_agent = $_SERVER['HTTP_USER_AGENT'];
}
}
return $user_agent;
}

页面 Action 轨迹如下。

[2012-09-27 13:20:50] => Array
(
[uri] => /start
[ua] => Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Sky Broadband; DS_desktopsmiley; GTB7.4; chromeframe/21.0.1180.89; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; playbrytetoolbar_playbryte; AskTB5.6; 789905664603; lib/6.02324)
)

[2012-09-27 13:20:50] => Array
(
[uri] => /nominees
[ua] => Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Sky Broadband; DS_desktopsmiley; GTB7.4; chromeframe/21.0.1180.89; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; playbrytetoolbar_playbryte; AskTB5.6; 789905664603; lib/6.02324)
)

[2012-09-27 13:21:10] => Array
(
[uri] => /nominees-save
[post] => Array
(
[category] => talent_show
[talent_show] => 5
)
[ua] => Mozilla/5.0 (Windows NT 6.0; chromeframe/21.0.1180.89) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1
)
[2012-09-27 13:21:10] => Array
(
[uri] => /vote-error
[ua] => Mozilla/5.0 (Windows NT 6.0; chromeframe/21.0.1180.89) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1
)

[2012-09-27 13:21:16] => Array
(
[uri] => /vote-start
[ua] => Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Sky Broadband; DS_desktopsmiley; GTB7.4; chromeframe/21.0.1180.89; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; playbrytetoolbar_playbryte; AskTB5.6; 789905664603; lib/6.02324)
)

我注意到三件事。 1) 这个人安装了一大堆工具栏。 2) 安装了 Chromeframe。 3) MSIE存在于普通页面中,但不存在于POST请求和后续请求中。

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

被添加到 HTML 并返回 header 。 chromeframe 是这里的责任方吗?如果是这样,为什么 chromeframe 会像这样劫持 POST 请求 header ?如果它不是 chromeframe 有什么想法吗?

最佳答案

我猜肯定是 ChromeFrame。用户代理字符串被它增加的原因可能有很多。以下是我可以猜测的一些(这些都取决于 ChromeFrame 可能仅在它认为需要时才介入的事实):

  1. ChromeFrame - 启用后 - 不知道或无法访问原始浏览器用户代理字符串,因此生成它自己的。

  2. 它可以帮助开发服务器端。

  3. ChromeFrame 是一个完全不同的用户代理,因此很容易争辩说它应该以不同的方式向服务器端报告。 (特别是从 Mozilla 4.0 到 5.0 的变化)

http://www.chromium.org/developers/how-tos/chrome-frame-getting-started#TOC-Detecting-Google-Chrome-Frame-and-Prompting-to-Install

基本上用户代理字符串是不可靠的。你应该找到一些其他的方法。

关于php - 为什么 IE 用户代理字符串在 POST 表单上变化如此之大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12622051/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com