美文网首页
浏览器环境下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