根据我对主要浏览器(即firefox)的研究,似乎只有在302重定向的“位置响应”标头为绝对URL的情况下,JavaScript注入才有效。也就是说:
Location: //xxx:1/\\r\\nContent-Type:text/html\\r\\n\\r\\n<script>alert(document.domain)</script>
将导致CRLF劫持,而
Location: /xxx:1/\\r\\nContent-Type:text/html\\r\\n\\r\\n<script>alert(document.domain)</script>
不会,因为当发送到原始服务器domain.com/xxx:1/作为GET请求时,浏览器似乎只会忽略尾随“ / xxx:1 /”的所有内容。
什么RFC标准定义了浏览器将在CRLF字符分割后接受内容(如果这是绝对URL重定向),而不是仅仅接受相对URL重定向?