x-headers

本文解析了HTTP协议中涉及的X头域,这些头域对于移动设备网络开发非常重要,可用于用户身份认证、设备辨识及网络特性确认等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文链接:http://www.yeeyan.com/articles/view/37503/37323


英文链接:

http://mobiforge.com/developing/blog/useful-x-headers

 

X头域解析

191个读者 biAji @ yeeyan.com 2009年04月15日 双语对照  原文 字体大小

简介

本文对http协议中未曾涉及到,而移动设备网络开发又经常遇到的x头域做了简要的解析

X头域解析

jonarne's picture

 

我最近开始以搜集 "X-headers" 头域为乐。X头域是HTTP请求中以X为开头的头域的统称。简单的说,这些头域是一些非标准HTTP协议所包括的或者是专有的。在开发移动门户时,这些头域会起到很有趣的作用。我将我x头域的搜集结果分享一下。

一般来说,只对自己了解的东西发表言论是明智之举。所以我现在的做法让我感觉如履薄冰,但我希望这个帖子能为读者带来些微的益处。

X头域可以在诸多方面得到应用:用户身份认证,设备辨识,网络特性确认等等。无论是从创建良好的移动应用体验还是从满意度来看,这些信息都是很有用的。

我从访问过 我的网站的设备中搜集了以下头域列表。我不能理解全部它们的意义;一些是我猜测的,但它们仍然很有趣。如果我搞错了其中一些,而您又恰好知道,请告诉我。

这些头域是我们耳熟能详的。

头域名称涵义
x-forwarded-for客户端连接至服务器的IP地址
x-forwarded-host源主机名
x-forwarded-server源服务器名
x-wap-profile遵循指定标准的用户代理配置
x-wap-profile-diffwap网关或代理可以选择性的覆写用户代理配置。其区别于此指定

其它有意思的头域

头域名称涵义
x-apn-id:接入点识别。Wap、因特网、电子邮件等可以拥有不同的接入点设置。
x-charging-id:有人知道这是干啥用的么?其值为空
x-drutt-3pi-request-uriDrutt是一个由爱立信提供的业务支持系统。这个头域的作用未知……
x-drutt-3pi-serviceid未知
x-drutt-device-id以名称识别设备。如:“Nokia_N95__S60_browser_”
x-drutt-request-id未知
x-ebo-ua:未知
x-ggsnip:包含网络中GGSN的IP地址
x-h3g-cc未知
x-h3g-client-ip设备处于当前网络的IP。session识别
x-h3g-customer-subtype识别客户定制类型
x-h3g-customer-type识别客户类型
x-h3g-device-name设备名称。比如:Nokia-N95-Safari
x-h3g-nc未知,其值为"4".
x-h3g-network-quality网络类型,比如"3G"
x-h3g-party-country标示用户国家
x-h3g-party-id未知
x-h3g-party-status未知
x-h3g-party-user-id未知
x-h3g-roaming-status标示用户是否处于漫游状态。布尔值
XID:未知
x-jphone-color一些softbank相关的东西
x-jphone-display屏幕尺寸
x-jphone-msname未知,示例值:821P
x-jphone-region:未知
x-jphone-smaf未知,示例值: "40/pcm"
x-jphone-uid:我猜是用户id
x-lori-time-1:未知
x-net-info未知
x-network-info:包含承载网络(比如GPRS)内部IP地址之类的信息
x-os-prefs:标示设备能力。示例值: "fw:240; fh:320; cd:24c; pl:3; pj:1; pa:1;pi:1;ps:2;"
x-proxy-id:未知
x-psp-browserPSP浏览器版本
x-psp-productcode未知,示例值: "CEL"
x-roaming:漫游信息。取值 "Yes" 或 "No"
x-sgsnip:

 SGSN的IP地址

x-source-id未知
x-wapipaddr:wap网关的IP地址
x-wap-proxy-cookie:cookie?
x-wsb-contextid未知,Vodafone(沃达丰)相关的东西?

OpenWave 网关获得的头域。我对这个不太熟,所以我直接查的wirelessFAQ

头域名称涵义
x-up-calling-line-id:终端用户手机号码
x-up-devcap-accept-language:与accept-language头域类似
x-up-devcap-cc:未知,示例值:1
x-up-devcap-charset:字符集
x-up-devcap-charset: utf字符集相关
x-up-devcap-immed-alert:未知
x-up-devcap-iscolor:布尔值,定义设备是否为彩色屏幕
x-up-devcap-max-pdu:最大负载值
x-up-devcap-msize:未知
x-up-devcap-numsoftkeys:设备软键数目
x-up-devcap-screen-chars:一行能容纳的字符数?
x-up-devcap-screendepth:色深
x-up-devcap-screenpixels:以点为单位的屏幕尺寸
x-up-devcap-smartdialing:不知道智能拨号是干啥的。可能是一键拨号功能吧。
x-up-devcap-softkeysize:未知
x-up-fax-accepts:未知
x-up-fax-limit:未知?
x-up-subno:某种最终用户ID
x-up-uplink:看起来像是wap网关的dns名称
x-up-wappush-secure:未知
x-up-wappush-unsecure:未知
x-up-wtls-info:未知

诺基亚wap网关头域:

头域名称涵义
x-nokia-alias最终用户手机号,加密
x-nokia-bearer:GPRS之类的
x-nokia-connection_mode一般是TCPIP
x-nokia-gateway-id:wap网关标识。看起来跟Via头域差不多的用法
x-nokia-imsi:Imsi值
x-nokia-ipaddress:内部IP地址
x-nokia-localsocket:内部IP地址和端口号
x-nokia-msisdn:用户手机号,普通文本
x-nokia-musicshop-bearerNokia音乐商店。典型值 "GPRS/3G"
x-nokia-musicshop-version:Nokia音乐商店版本号
x-nokia-prepaidind:与定制相关的东西。取值 "4"

代码转换头域

头域名称涵义
x-novarra-device-type:Novarra头域,作用未知,取值为"0"
x-operamini-features: Opera Mini代理加上的头域。取值为 "advanced, download, camera, folding, inputhints"
x-operamini-phone:Opera Mini代理提供的手机
x-operamini-phone-ua:使用Opera Mini浏览器的设备原始用户代理名称
x-original-user-agent:由Googles转换的发至服务器的原设备用户代理名称
x-surfopen-msisdn:一些SurfOpen的东西。取值标示着此对话为人为创建
x-moz:未知,但看起来像是代理的行为。取值为"prefetch".
x-bluecoat-via不明白这是什么。但可能跟bluecoat. 有关。是它的转换代码?
x-mobile-gateway:标识网关/代理。比如:"Novarra-Vision/6.9 (TELIASONERA; Server-Only)"
x-mobile-ua: Mowser 转换的原始用户代理
x-device-accept:

经过转码的设备原始accept头域。比如; Novarra. 这是w3c鼓励的行为方式

x-device-accept-charset:如前
x-device-user-agent:如前

可以用来识别最终用户的头域

头域名称涵义
x-drutt-client-ip手机当前的IP地址。取值为内部10.开头的内部IP
x-drutt-portal-user-iddrutt系统中用户唯一识别码
x-drutt-portal-user-msisdn手机号码
x-h3g-msisdn手机号码
x-imsi:imsi号码。辨识最终用户
x-msisdn

最终用户手机号码

x-nas-ip:未知,但取值为一内网IP
x-wap-clientid:看起来好似唯一用户识别码
x-wap-personalization:无线网内设备IP
x-wsb-identity最终用户手机
x-wte-msisdn:说是手机号码,但看起来不像
x-nokia-imsi:Imsi值
x-nokia-alias用户手机号,密文
x-nokia-msisdn:普通文本形式的用户手机
x-up-calling-line-id:最终用户识别码

AvantGo 头域

头域名称涵义
x-avantgo-browser标识AvantGo浏览器
x-avantgo-channelid显而易见的
x-avantgo-clientcharset客户端字符集
x-avantgo-clientlanguage客户端语言设置
x-avantgo-colordepth取值: "MTY"
x-avantgo-cradlesync取值: "TRUE"
x-avantgo-deviceid标识设备的代码
x-avantgo-deviceos操作系统?
x-avantgo-deviceosversion操作系统版本?
x-avantgo-deviceprocessor处理器名称?
x-avantgo-platformdata?
x-avantgo-screensize提供屏幕尺寸的字符串。取值示例:"MTUweDo1MA"
x-avantgo-tracking-referer?
x-avantgo-url如果它标示URL,那应该是加密的
x-avantgo-userid最终用户为一识别码
x-avantgo-version AvangGo版本
<think>好的,我现在需要解决用户关于CORS配置的问题,特别是如何正确设置Access-Control-Allow-Headers包括Origin、X-Requested-With、Content-Type和Accept。首先,我要回忆一下CORS的基本知识。跨域资源共享(CORS)是一种机制,允许不同源的资源进行交互。当浏览器检测到跨域请求时,会发送预检请求(OPTIONS方法)来检查服务器是否允许实际的请求。这时候,服务器需要正确设置响应头来通过这个检查。 用户提到需要设置Access-Control-Allow-Headers,这个头部的作用是告诉浏览器服务器允许客户端在请求中携带哪些HTTP头。用户列出的头包括Origin、X-Requested-With、Content-Type和Accept。这些头通常会在跨域请求中出现,比如Content-Type指定了请求体的类型,Accept指定了客户端能够接收的内容类型,而X-Requested-With通常用于标识Ajax请求。 接下来,我需要确认正确的配置方法。根据之前的引用内容,引用[2]指出,当请求头中包含某些自定义或特定头时,服务器必须在Access-Control-Allow-Headers中明确列出这些头,否则预检请求会失败。例如,如果客户端发送了X-Requested-With头,服务器必须响应包含这个头的Access-Control-Allow-Headers。 另外,引用[2]还提到,当Access-Control-Allow-Credentials设置为true时,Access-Control-Allow-Origin不能使用通配符*,而必须指定具体的域名。这点需要注意,因为用户可能在配置中需要处理带凭证的请求,如包含Cookies的情况。 现在,具体到如何配置这些头。对于不同的服务器,配置方式可能不同。比如在Apache中,可以通过修改.htaccess文件或者虚拟主机配置,使用Header set指令来设置这些响应头。例如: Header set Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept" 同时,确保其他相关的CORS头也正确设置,比如Access-Control-Allow-Origin和Access-Control-Allow-Methods。例如: Header set Access-Control-Allow-Origin "http://example.com" Header set Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS" Header set Access-Control-Allow-Credentials "true" 在Nginx中,配置可能是在server块中添加: add_header 'Access-Control-Allow-Headers' 'Origin, X-Requested-With, Content-Type, Accept'; add_header 'Access-Control-Allow-Origin' 'http://example.com'; add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS'; add_header 'Access-Control-Allow-Credentials' 'true'; 另外,处理预检请求时,服务器需要正确响应OPTIONS方法,返回200状态码,并且包含所有必要的CORS头。可能还需要配置服务器对OPTIONS请求的处理,避免返回错误。 用户可能遇到的问题包括拼写错误、头部的顺序或遗漏某些必要的头。例如,如果漏掉了Content-Type,而客户端请求中包含了该头,就会导致CORS失败。或者,当使用Credentials时,Origin不能设为通配符,必须明确指定,这也是常见的错误点。 总结来说,正确的步骤应该是:确定需要的请求头,将它们列在Access-Control-Allow-Headers中,设置正确的允许来源和方法,处理OPTIONS请求,并确保凭证情况下的配置正确。同时,注意不同服务器的语法差异,避免配置错误。</think>在配置 CORS 时,正确设置 $Access-Control-Allow-Headers$ 需要遵循以下步骤: ### 1. 核心响应头配置 ```apache Header set Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept" Header set Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS" Header set Access-Control-Allow-Origin "http://yourdomain.com" # 必须指定具体域名[^2] Header set Access-Control-Allow-Credentials "true" # 带凭证时需要[^3] ``` *注意:当启用 $Access-Control-Allow-Credentials$ 时,$Access-Control-Allow-Origin$ 禁止使用通配符 $*$* ### 2. 预检请求处理 需确保服务器正确处理 $OPTIONS$ 预检请求: ```nginx location / { if ($request_method = OPTIONS) { add_header 'Access-Control-Allow-Headers' 'Origin, X-Requested-With, Content-Type, Accept'; add_header 'Access-Control-Max-Age' 1728000; # 缓存时间(秒) return 204; } } ``` ### 3. 验证配置 可通过浏览器开发者工具检查响应头: ```http HTTP/1.1 200 OK Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept Access-Control-Allow-Origin: http://yourdomain.com Access-Control-Allow-Credentials: true ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值