2010-01-22 3 views
0

요청을 만들고 SOAP 객체를 전달하려고 할 때 문제가 다시 발생하지만 (onSuccess) responseXML이없는 것입니다. 필자는 Fiddler와 HTTP Client (OSX 버전의 fiddler)를 사용하고 동일한 요청을 입력했습니다. 프로토 타입이 아니라별로. 내가 헤더 및 매개 변수 필드에 노력SOAP 프로토 타입 Ajax SOAPAction 헤더 질문

...

<script type="text/javascript" src="prototype.js"></script> 
<script type="text/javascript"> 
    function test(){ 
     var body = '<?xml version="1.0" encoding="utf-8"?>' + 
     '<soap:Envelope' + 
     ' xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"' + 
     ' xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"' + 
     ' xmlns:tns="urn:uvindexalert" xmlns:types="urn:uvindexalert/encodedTypes"' + 
     ' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"' + 
     ' xmlns:xsd="http://www.w3.org/2001/XMLSchema">' + 
     ' <soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">' + 
     ' <tns:getUVIndexAlertByZipCode>' + 
     '  <in0 xsi:type="xsd:string">92109</in0>' + 
     ' </tns:getUVIndexAlertByZipCode>' + 
     ' </soap:Body>' + 
     '</soap:Envelope>'; 

     var headers = ["SOAPAction", " ", "Content-Type", "text/xml"]; 

     var request = new Ajax.Request("http://iaspub.epa.gov/uvindexalert/services/UVIndexAlertPort?wsdl", { 
      contentType: "application/xml", 
      requestHeaders: headers, 
      parameters: "SOAPAction: ", 
      postBody: body, 
      onSuccess: function(response){ 
       var j = 0; 
      }, 
      onFailure: function(){ 
       var i = 0; 
      } 
     }); 
    } 

    test(); 
</script> 

는 그래서 그것을 검사 할 수 있습니다 나누기 어디 그래서 난 그냥를 & J를 알고하는 VAR. 나는 또한 온라인으로 보았고 누군가가 text/xml application/xml 대신 textset/utf-8을 추가한다고 말했어. 그래서 나는 그 모든 것을했지만 여전히 아무것도하지 않았다. 누구나 SOAPAction을 사용하여 XML을 가져 오는 방법을 알고 있습니까?

답변

2

크로스 사이트 스크립팅 보안 문제를 제외하고는 이전에 Prototype.js SOAP 클라이언트를 작성했으며 'Content-Type'및 'SOAPAction'헤더에 많은 문제가있었습니다. 나는 결국 다음을 사용했고 효과가있었습니다 (그러나 같은 도메인의 요청에만 해당).

Content-Type: text/xml; charset=utf-8 
SOAPAction: "" 

웹 서버에서 OPTIONS 요청에 대해이 헤더를 보내야합니다 :

Access-Control-Allow-Origin: * 
0

Ajax로 도메인 간 요청을 할 수 없습니다. 보안 제한 사항입니다.

안전한 도메인 간 요청을 사용하기위한 여러 가지 노력이 진행되고 있지만 모든 브라우저에서 지원되지는 않으며 요청하려는 사이트의 협력이 필요합니다. 많은 사람들은 대신 HTTP 프록시 스크립트 (Ajax 요청을 수신하고 원격 URL에 접속하여 응답을 전달하는 서버상의 스크립트)을 사용합니다.