HTTP请求头自定义参数有什么作用?

比如我通过xhr.setRequestHeader('key', 'value')自定义了一个参数,那么这个参数有什么用处?可以在哪些地方使用呢?js能使用吗?

部分头设置不了,比如来源响应头referrer,自定义的随便设置,服务器端可以用类似getRequestHeader方法获取到,比如ajax发送的请求会附带
X-Requested-With :XMLHttpRequest
这个响应头,比如这个方法只能ajax请求,你可以判断X-Requested-With响应头的值是否为XMLHttpRequest,不是就停止执行代码。其他响应头同理,看你的需求了

本质上,“自定义”和“标准”之间没有明确的界限

比如,x-forwaord-for,算标准的参数还是自定义的?它用的非常多,但是你在http 1.1中找不到
http://tools.ietf.org/html/rfc2616

本质上,http协议就被设计成可以扩展,向前兼容的东西。