2013-04-23 6 views
0

나는 html 페이지가 있습니다. 제출 단추를 누르면 요청이 전송됩니다. 내 문제는 요청의 헤더가 줄어들 었다는 것입니다! 나는 법인 적 한계이기 때문에 IE를 사용합니다.HTTP 헤더가 소문자로 변했습니다.

<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

헤더가 다운되어 있지 않은 것이 중요합니까?

그렇다면 RFC 2616에 따라 모든 필드 이름이 대소 문자를 구분하지 않아야합니다.

3

HTTP RFC 2616에 따라 헤더 필드 이름은 대소 문자를 구분하지 않습니다. 견적 그것으로부터 다음 일반 헤더를 포함

HTTP 헤더 필드 (섹션 4.5), 요청 헤더 (섹션 5.3), 응답 헤더 (6.2 절)와 엔티티 헤더 (7.1) 필드는 RFC 822 [9]의 3.1 절에 주어진 과 동일한 일반 형식을 따릅니다. 각 헤더 필드는 콜론 (":")과 필드 값 다음에 오는 이름으로 구성됩니다. 필드 이름이 인 경우은 대/소문자를 구분하지 않습니다. 필드 값은 하나의 SP가 선호 되긴하지만 임의의 양의 LWS가 선행 될 수있다. 헤더 필드는 각 추가 행 앞에 적어도 하나의 SP 또는 HT를 추가하여 여러 줄에 걸쳐 까지 확장 할 수 있습니다. 응용 프로그램은 HTTP 구조를 생성 할 때 무엇을

이 표준 동작이며 모든 브라우저 바 IE6을 허용하지 하는 구현 결과도있을 수 있기 때문에, 하나 을 알려 지거나 표시됩니다 "일반적인 형태"를 따라야한다고 이것을 준수하십시오. 따라서이 문제로 인해 문제가 발생하면 XMLHttpRequest 개체 동작이 변경되는 심각한 문제가 발생합니다 (사용자가 수정할 수 없음). 헤더로 뭐하고 있니?

오늘의 (포춘 쿠키 : 이에 완벽하게 적용받는 것에 관대, 그것은 보내는에서 앱이 엄격하게 소문자, 대문자, CamelCase를 헤더의 혼합을받을 것으로 예상 .... 하지만 보내시는 모든 것에 RFC에 따르십시오)

+0

고마워요! 대/소문자를 구분하는 SOAPAction (soapaction이 아님) 매개 변수를 기다리는 우리 파트너 응용 프로그램에 헤더를 보냅니다. – Dev

+0

RFC 2616을 가리키고 ** 표준 시작 **을 말합니까? :-) 더 진지하게, 슬프게도 클라이언트 측에서 원하는 것을 할 수있는 방법이 없습니다. 로컬 스크립트를 통해 요청을 프록시하거나 수신자를 수정할 수 있습니다. 그 두 가지 "유일한"옵션입니다, 나는 두렵습니다. –

+0

(해당 파트너와 비즈니스 관계에있는 경우, 기술적 인 무능력을 기반으로 이러한 파트너를 놀라게 할 수 있습니다. 조금만 짜내면 가치가 있습니다. 그것.) –

관련 문제