在ASP.NET Core中如何获取持卡人的浏览器详细信息(SagePay场景)
SagePay支付网关所需浏览器信息获取方案
一、各字段获取方法
前端JavaScript采集(多数客户端专属信息需通过JS获取)
- Browser Color Depth:使用
screen.colorDepth或screen.pixelDepth,现代浏览器中两者返回值一致。 - Browser JavaEnabled:调用
navigator.javaEnabled(),但目前主流浏览器已默认禁用Java插件,返回值基本为false。 - Browser Javascript Enabled:只要能执行JS代码,就说明JS已启用;若需后端确认,可在页面加载后通过AJAX给后端发标记,或用
<noscript>标签生成特殊请求告知后端JS未启用。 - Browser Language:用
navigator.language获取用户首选语言(如zh-CN),或navigator.languages获取完整语言设置数组。 - Browser Screen Height/Width:分别通过
screen.height和screen.width获取屏幕分辨率。 - Browser TZ(时区偏移分钟数):调用
new Date().getTimezoneOffset(),注意返回值为UTC时间减去本地时间,例如UTC+8时区返回-480。 - Client WindowSize:用
window.innerWidth和window.innerHeight获取当前浏览器视口宽高;兼容旧浏览器可使用document.documentElement.clientWidth和document.documentElement.clientHeight。 - Browser UserAgent:通过
navigator.userAgent获取,包含浏览器、操作系统等标识信息。
后端获取(依赖请求头或服务器环境)
- Browser Accept Header:从HTTP请求头的
Accept字段读取,不同后端语言的获取方式:- PHP:
$_SERVER['HTTP_ACCEPT'] - Node.js:
req.headers.accept - Java Servlet:
request.getHeader("Accept")
- PHP:
- Browser IP:从服务器获取客户端请求IP,若使用反向代理(如Nginx),需读取
X-Forwarded-For等代理头:- PHP:
$_SERVER['REMOTE_ADDR'](直接连接IP)或$_SERVER['HTTP_X_FORWARDED_FOR'](代理后真实IP) - Node.js:
req.ip或req.headers['x-forwarded-for']
- PHP:
- Browser UserAgent:也可从请求头的
User-Agent字段获取,和前端结果一致,后端获取更不易被篡改。
二、可用工具包
大部分信息通过原生JS和后端内置功能即可获取,无需额外工具包。若需简化UserAgent解析、兼容处理等场景,可考虑:
- 前端:
bowser库,能解析UserAgent字符串,快速判断浏览器类型、版本、操作系统等信息。 - 后端:
- PHP:
get_browser()函数(需配置browscap.ini文件),可解析UserAgent并返回浏览器详细参数。 - Node.js:
useragent库,支持UserAgent的解析与格式化。
- PHP:
内容的提问来源于stack exchange,提问作者hanushi-thana
相关产品推荐
相关产品推荐

