Javascript SOAP原型Ajax SOAPAction标题问题

Javascript SOAP原型Ajax SOAPAction标题问题,javascript,ajax,soap,prototypejs,Javascript,Ajax,Soap,Prototypejs,所以我尝试发出请求并传入SOAP对象,问题是它返回的很好(onSuccess),但是responseXML不存在。我使用Fiddler和HTTP客户端(Fiddler的OSX版本)输入相同的请求boom,并返回正确的响应。有了原型,就没那么多了 我尝试在标题和参数字段中 <script type="text/javascript" src="prototype.js"></script> <script type="text/javascript">

所以我尝试发出请求并传入SOAP对象,问题是它返回的很好(onSuccess),但是responseXML不存在。我使用Fiddler和HTTP客户端(Fiddler的OSX版本)输入相同的请求boom,并返回正确的响应。有了原型,就没那么多了

我尝试在标题和参数字段中

<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>

功能测试(){
变量体=“”+
'' +
'  ' +
'    ' +
'       92109' +
'   ' +
'  ' +
'';
var headers=[“SOAPAction”,“Content-Type”,“text/xml”];
var request=new Ajax.request(“http://iaspub.epa.gov/uvindexalert/services/UVIndexAlertPort?wsdl", {
contentType:“应用程序/xml”,
requestHeaders:headers,
参数:“SOAPAction:”,
postBody:body,
onSuccess:函数(响应){
var j=0;
},
onFailure:function(){
var i=0;
}
});
}
test();

var i&j只是为了让我知道它在哪里断裂,以便我可以检查它。我也在网上看了看,发现有人说用try代替text/xml application/xml,然后添加charset=utf-8,所以我做了所有这些,但还是什么也没做。有人知道如何使用SOAPAction返回XML吗?

使用Ajax不能进行跨域请求。这是安全限制


为了实现安全的跨域请求,目前正在进行一些不同的工作,但并非所有浏览器都支持这些工作,它们需要您尝试向其发出请求的站点的合作。许多人转而使用HTTP代理脚本—服务器上的一个脚本,用于接收Ajax请求、联系远程URL并传递响应。

您不能使用Ajax进行跨域请求。这是安全限制


为了实现安全的跨域请求,目前正在进行一些不同的工作,但并非所有浏览器都支持这些工作,它们需要您尝试向其发出请求的站点的合作。许多人转而使用HTTP代理脚本—服务器上的一个脚本,用于接收Ajax请求、联系远程URL并传递响应。

除了跨站点脚本安全问题之外,我以前编写过Prototype.js SOAP客户端,在“内容类型”和“SOAPAction”标题方面有很多问题。我最终使用了下面的方法,它起了作用(但只适用于同一域中的请求)

Web服务器应为
选项
请求发送此标头:

Access-Control-Allow-Origin: *

撇开跨站点脚本安全问题不谈,我以前编写过Prototype.js SOAP客户端,在“Content Type”和“SOAPAction”标题方面有很多问题。我最终使用了下面的方法,它起了作用(但只适用于同一域中的请求)

Web服务器应为
选项
请求发送此标头:

Access-Control-Allow-Origin: *