美文网首页
浏览器环境下HTTP的Request Header

浏览器环境下HTTP的Request Header

作者: 無式 | 来源:发表于2017-09-05 16:45 被阅读0次

    HTTP Header

    • 我们知道HTTP协议中定义了Header,是一组KV集合。
    • 在请求时可以把信息放在Header中带给服务端,在响应时也可以利用Header输出部分信息。

    Header使用场景

    • 常用场景包括在Header中标明请求的Content-TypeAccept-Language,甚至请求的Cookie信息也是在Header中传输。
    • 特别地,在Restful Api中,我们经常将登录认证信息(Token)放在请求的Authorization里,服务端解析认证信息来判断登录是否有效。

    浏览器环境下的限制

    • 今天遇到一个问题,项目定义的Rest认证协议中,用到了Header里的AuthorizationDate字段。
    • 这些接口一般情况是由服务端发起调用,并没有任何问题。
    • 但是最近我在写一个web版的工具,想在浏览器环境下构造请求访问这些接口,但是发现请求的Header中无法写入我指定的Date值。
    • 查阅相关资料才发现,原来在web环境下,为了一些安全原因,浏览器会限制手动构造的HTTP请求中的Header内容。其中包括:
    • accept-charset
    • accept-encoding
    • access-control-request-headers
    • access-control-request-method
    • connection
    • content-length
    • content-transfer-encoding
    • cookie
    • cookie2
    • date
    • expect
    • host
    • keep-alive
    • origin
    • referer
    • te
    • trailer
    • transfer-encoding
    • upgrade
    • via

    解决和结论

    • 既然在浏览器层面限制了在,我也只好绕过这个问题。具体方案有二:
      1. 修改服务端认证协议,兼容另一个Header字段来当作Date
      2. WEB前端请求本地服务端,本地服务端中转接口再请求Rest服务。
    • 在定义私有协议的时候,最好事先了解一下大环境下的通用协议,避免与之产生冲突。

    相关文章

      网友评论

          本文标题:浏览器环境下HTTP的Request Header

          本文链接:https://www.haomeiwen.com/subject/xraujxtx.html