HTTP标头变为小写

时间:2013-04-23 16:40:56

标签: javascript xmlhttprequest

我有html页面。按下提交按钮后,正在发送请求。我的问题是请求的标题是downcased!我使用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>

2 个答案:

答案 0 :(得分:3)

通过HTTP RFC 2616,标头字段名称不区分大小写。从下面引用:

  

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

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

(当天的幸运饼干:让你的应用程序严格按照它发送的内容,对收到的内容宽容完全适用于此。期望收到小写,大写, camelcase headers ...但是在你发送的所有内容上符合RFC)

答案 1 :(得分:2)

您的标题不是小写的,这对您来说很重要吗?

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