0

我有html页面。按下提交按钮后,请求正在发送。我的问题是请求的标头被小写了!我使用 IE 是因为它是公司的限制。

<html>
<head>
<script language="JavaScript" type="text/javascript">

function AjaxRequest(url,callback,method){
        var req = new XMLHttpRequest();
        req.onreadystatechange= function(){
                if(req.readyState != 4) return;
                callback(req);
        }
        req.open(method,url,true);

        var hdrsArr =  document.getElementById('headers').value.split('&');
        for (var i = 0; i < hdrsArr.length; i++){
            var p = hdrsArr[i].split('=');
            req.setRequestHeader(p[0],p[1]);
        }

        var params =  document.getElementById('params').value ;
        req.send(params);
}
function AjaxResponse(res){}
function MakeRequst(){
        alert('');
        var url = "http://localhost:8080/test-servlet/TestServlet";
        AjaxRequest(url,AjaxResponse,"POST");
}
</script>
</head>
<body>
<input type='text' id="headers" size="200" value='key=value&SOAPAction=requestCreditBureau&Content-Type=text/xml;charset=UTF-8&Accept=text/xml'/><br>
<input type='text' id="params" size="200" value='<?xml version="1.0" encoding="UTF-8"?><CB_Document appl="00000000000127725161" >[....]</CB_Document>'/><br>
<input type='button' value='doPost' onClick="MakeRequst();"/><br>
<div id="response_div"></div>
</body>
</html>
4

2 回答 2

3

根据 HTTP RFC 2616,标头字段名称不区分大小写。在下面引用它:

HTTP 头字段,包括 general-header(第 4.5 节)、request-header(第 5.3 节)、response-header(第 6.2 节)和 entity-header(第 7.1 节)字段,遵循与第 7.1 节中给出的相同的通用格式RFC 822 [9] 的 3.1。每个标头字段由一个名称后跟一个冒号(“:”)和字段值组成。字段名称不区分大小写。字段值可以在任意数量的 LWS 之前,但最好使用单个 SP。通过在每个额外行之前至少使用一个 SP 或 HT,可以将标题字段扩展到多行。在生成 HTTP 结构时,应用程序应该遵循“通用形式”,其中一种是已知的或指示的,因为可能存在一些无法接受任何内容的实现

这是标准行为,除 IE6 之外的所有浏览器都符合这一点。因此,如果这给您带来问题,您将在更改XMLHttpRequest对象行为时遇到严重问题(它不是用户态可修改的)。你在用标题做什么?

(今天的幸运 cookie:让你的应用程序严格发送它,宽松它接收的东西完全适用于此。期望接收小写、大写、驼峰式标题的混合......但符合 RFCs on您发送的所有内容)

于 2013-04-23T16:46:35.380 回答
2

你的标题不是小写对你来说很重要吗?

如果是,则不应该根据RFC 2616,所有字段名称都不区分大小写。

于 2013-04-23T16:44:15.850 回答