当前位置: 首页 > 工具软件 > Ajax Agent > 使用案例 >

php header 修改 user-agent,jQuery设置ajax请求中的User-Agent

龚宏壮
2023-12-01

昨天说了,我尝试过在AJAX请求中修改User-Agent,但是似乎没有效果,在FireFox下Bookmarklet仍然无法获得正确的返回值。在FireFox的帮助论坛上找到《Firefox 3.6.13 ajax setRequestHeader(‘User-Agent’, ‘…’) don’t work》这个帖子,看来也有人跟我遇到同样的问题。

从帖子的链接一直跟进,就来到了w3.org关于XMLHttpRequest的描述:

3.6.2. The setRequestHeader() method

Terminate these steps if header is a case-insensitive match for one of the following headers:

Accept-Charset

Accept-Encoding

Connection

Content-Length

Cookie

Cookie2

Content-Transfer-Encoding

Date

Expect

Host

Keep-Alive

Referer

TE

Trailer

Transfer-Encoding

Upgrade

User-Agent

Via

Note: The above headers are controlled by the user agent to let it control those aspects of transport. This guarantees data integrity to some extent. Header names starting with Sec- are not allowed to be set to allow new headers to be minted that are guaranteed not to come from XMLHttpRequest.

紫色部分说,上面的消息头只能由浏览器控制,而不能用XMLHttpRequest对象来修改,即不能通过JavaScript修改。但是这也只是w3建议的标准而已,至于浏览器遵不遵循标准,那就得看开发人员了。

为了测试,先写一个ua.php,回显User-Agent:

echo $_SERVER['HTTP_USER_AGENT'];

?>

然后用jQuery发送ajax请求,并在发送之前用XMLHttpRequest对象的setRequestHeader方法修改User-Agent:

$.ajax({

type:"GET",

url:"ua.php",

success:function(data) {

alert(data);

},

beforeSend:function(xhr) {

xhr.setRequestHeader("User-Agent","uTorrent");

}

});

可以通过访问ua.html来进行测试,看看你的浏览器是否支持修改User-Agent。根据我的测试,IE还是跟往常一样无视标准的存在,可以用JavaScript在ajax请求中设置User-Agent,而FireFox和Chrome都无法修改User-Agent。这样看来,用JavaScript写一个六维空间流量作弊书签小工具也不是难事。

但是,昨天写的那个Bookmarklet就真的只能在IE下使用了,虽然可以写一个FireFox或者Chrome插件来解析115的下载地址。但是谁会为了区区一个网盘而大动干戈写一个浏览器插件呢?反正我没有那么闲,谁爱写谁写去。退一步讲,就算有人写了插件,又有谁会安装呢?下个解析工具还快点。

反正我很少用115网盘,要不是为了宠物小精灵,我才不会无聊到研究这种东西。然而,昨天还能下载的宠物小精灵,今天却弹出一个“视频文件禁止共享,请登录下载!”的错误,原来是“为加强知识产权的保护力度,营造健康有益的网络环境,115网盘暂时停止影视资源外链服务。”看来我得把阵地转移到还没有加强知识产权保护力度的电驴了。

随机文章:

这篇文章发布于 2011年03月31日,星期四,13:13,归类于 程序设计。您可以跟踪这篇文章的评论通过 RSS 2.0 feed。

您可以留下评论,或者从您的站点trackback。

 类似资料: