标签: user-agent

确定用户的时区

Web服务器是否有标准方法可以确定用户在网页中的时区?

也许来自HTTP标头或user-agent字符串的一部分?

html browser timezone user-agent timezone-offset

597
推荐指数
25
解决办法
18万
查看次数

自动检测移动浏览器(通过用户代理?)

如何检测用户是否正在通过移动Web浏览器查看我的网站,以便我可以自动检测并显示我的网站的相应版本?

html browser user-agent windows-mobile

291
推荐指数
10
解决办法
30万
查看次数

在JavaScript中检测IE版本(v9之前)

如果他们使用的是Internet Explorerv9之前的版本,我想将我们网站的用户反弹到错误页面.我们的时间和金钱都不值得支持IE pre-v9.所有其他非IE浏览器的用户都很好,不应该被退回.这是建议的代码:

if(navigator.appName.indexOf("Internet Explorer")!=-1){     //yeah, he's using IE
    var badBrowser=(
        navigator.appVersion.indexOf("MSIE 9")==-1 &&   //v9 is ok
        navigator.appVersion.indexOf("MSIE 1")==-1  //v10, 11, 12, etc. is fine too
    );

    if(badBrowser){
        // navigate to error page
    }
}
Run Code Online (Sandbox Code Playgroud)

这个代码会起作用吗?

关闭一些可能会出现的评论:

  1. 是的,我知道用户可以伪造他们的useragent字符串.我并不担心.
  2. 是的,我知道编程专家更喜欢嗅出功能支持而不是浏览器类型,但我觉得这种方法在这种情况下没有意义.我已经知道所有(相关的)非IE浏览器都支持我需要的功能,并且所有pre-v9 IE浏览器都不支持.在整个站点中按功能检查功能将是一种浪费.
  3. 是的,我知道有人试图使用IE v1(或> = 20)访问该网站不会将'badBrowser'设置为true,并且警告页面将无法正确显示.这是我们愿意承担的风险.
  4. 是的,我知道微软有"条件评论",可以用于精确的浏览器版本检测.IE不再支持条件注释IE 10,使得这种方法绝对无用.

还有其他明显的问题需要注意吗?

javascript internet-explorer user-agent browser-detection

246
推荐指数
14
解决办法
38万
查看次数

OAuth 2中隐式授权授权类型的目的是什么?

我不知道我是否只是有某种盲点或什么,但我已多次阅读OAuth 2规范并仔细阅读邮件列表档案,我还没有找到一个很好的解释为什么隐含格兰特已经开发出用于获得访问令牌的流程.与授权代码授予相比,似乎只是放弃了客户端身份验证,没有非常令人信服的理由.这是如何"针对使用脚本语言在浏览器中实现的客户端进行优化"(引用规范)?

两个流程都是相同的(来源:http://tools.ietf.org/html/draft-ietf-oauth-v2-22):

  1. 客户端通过将资源所有者的用户代理指向授权端点来启动流.
  2. 授权服务器对资源所有者进行身份验证(通过用户代理),并确定资源所有者是否授予或拒绝客户端的访问请求.
  3. 假设资源所有者授予访问权限,授权服务器使用先前提供的重定向URI(在请求中或在客户端注册期间)将用户代理重定向回客户端.
    • 重定向URI包括授权代码(授权代码流)
    • 重定向URI包括URI片段中的访问令牌(隐式流)

这是流量分裂的地方.在这两种情况下,此时重定向URI都是由客户端托管的某个端点:

  • 在授权代码流中,当用户代理使用URI中的授权代码命中该端点时,该端点上的代码会将授权代码及其客户端凭据交换为访问令牌,然后可以根据需要使用该令牌.例如,它可以将其写入页面上的脚本可以访问的网页中.
  • Implicit流完全跳过此客户端身份验证步骤,只是加载带有客户端脚本的网页.这里有一个可爱的技巧,URL片段可以防止访问令牌过多传递,但最终结果基本相同:客户端托管的站点提供一个页面,其中包含一些可以获取访问令牌的脚本.

因此我的问题是:通过跳过客户端身份验证步骤获得了什么?

user-agent oauth oauth-2.0

242
推荐指数
7
解决办法
7万
查看次数

为什么所有浏览器的用户代理都以"Mozilla /"开头?

所有流行的浏览器的用户代理字符串,甚至是Internet Explorer,都以Mozilla/.为什么会这样?

user-agent

195
推荐指数
4
解决办法
3万
查看次数

如何使用JavaScript查找操作系统版本?

如何使用JavaScript查找操作系统名称和操作系统版本?

javascript user-agent operating-system

188
推荐指数
10
解决办法
22万
查看次数

用户代理字符串有多大?

如果您要将用户代理存储在数据库中,您可以使用多大的容量?

我发现这篇文章建议将UA保持在200以下.看起来这似乎不是HTTP规范中定义的,至少不是我发现的.我的UA已经有149个字符了,似乎每个版本的.NET都会添加它.

我知道我可以将字符串解析出来并将其分解,但我不愿意.


编辑
基于此博客, IE9将更改为发送短UA字符串.这是一个很好的改变.


user-agent database-design http http-headers

182
推荐指数
8
解决办法
8万
查看次数

为什么Chrome和IE会将"Mozilla 5.0"放入他们发送到服务器的用户代理中?

当我自己向服务器发送许多请求时,我发现在IE中,如果我选择用户字符串的值为opera用户字符串,那就太棒了

User-Agent  Opera/9.80 (Windows NT 6.1; U; en) Presto/2.2.15 Version/10.00
Run Code Online (Sandbox Code Playgroud)

但是,如果我在Internet Explorer中选择另一个浏览器,则首先将Mozilla 5.0放入用户字符串中.

当我从Chrome发送ajax请求时,我发现他们放了用户字符串

Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.20 (KHTML, like Gecko) Chrome/11.0.672.2 Safari/534.20
Run Code Online (Sandbox Code Playgroud)

我发现Mozilla是一个与谷歌和微软没有任何关系的组织.也许它是两者的竞争对手.为什么MSFT和Google都将Mozilla放在他们的用户代理中?是否有任何理由将Mozilla放入连接字符串?

为什么chrome和IE都会在发送请求时将Mozilla放入用户字符串中?我不知道为什么,但有什么具体原因吗?

browser user-agent

136
推荐指数
1
解决办法
8万
查看次数

什么是iPad用户代理?

从我收集的信息来看,iPad正在使用iPhone OS,但屏幕分辨率与iPhone和iPod touch不同.许多网站可能不得不改变其用户代理检测以适应iPad.

那么,任何有权访问iPad或iPad SDK的人都能为我们提供用户代理字符串吗?

user-agent ipad

113
推荐指数
7
解决办法
19万
查看次数

在urllib2.urlopen上更改用户代理

如何使用urllib2.urlopen上默认用户代理以外的用户代理下载网页?

python user-agent urllib2

97
推荐指数
7
解决办法
14万
查看次数