Mar*_*lik 8 javascript http-referer internet-explorer cors xdomainrequest
当我通过XDomainRequest对象在IE中执行CORS时,不会发送Referer HTTP标头.有没有官方文件说明这个?我完全理解,依赖Referer HTTP头是基本错误的想法,但是没有确凿的证据我被困在这里,并且无法证明我们的架构师是错误的.
转储示例:
IE请求
GET http://example.com/some/url HTTP/1.1
Accept: */*
Origin: http://another.domain.com
Accept-Language: sk-SK
UA-CPU: AMD64
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)
Host: example.com
Connection: Keep-Alive
Pragma: no-cache
Run Code Online (Sandbox Code Playgroud)
Chrome请求
GET http://example.com/some/url HTTP/1.1
Host: example.com
Connection: keep-alive
Origin: http://another.domain.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36
Accept: */*
Referer: http://another.domain.com/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: sk-SK,sk;q=0.8,cs;q=0.6,en-US;q=0.4,en;q=0.2
Run Code Online (Sandbox Code Playgroud)
Eric Law(前 IE 程序经理)在他的博文中回答了这个问题,正如预期的 IE8 次返回的限制:
\n\n\n\n\n\n我们希望确保 XDomainRequest 对象不允许攻击者发出 HTML 表单无法发出的请求。这很重要,因为在返回响应之前,Access-Control-Allow-Origin 标头才可用,因此在发出请求之前,无法判断服务器是否存在愿意接受跨域HTTP请求。如果没有这些限制,即使服务器不返回 Access-Control-Allow-Origin 标头,\xe2\x80\x9cFire and Forget\xe2\x80\x9d CSRF 攻击也可能针对旧服务器发生
\n
归档时间: |
|
查看次数: |
3028 次 |
最近记录: |