SOAP客户端仅适用于Google Chrome

时间:2012-05-04 14:05:05

标签: javascript jquery google-chrome soap

我在javascript中创建了一个SOAP客户端。问题是它只适用于谷歌浏览器。

代码:

$("#send").click(function (event) {
    var wsUrl = "http://myip:8084/Service1.asmx";
    var soapRequest =
        '<?xml version="1.0" encoding="utf-8"?> \
        <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" \
        xmlns:xsd="http://www.w3.org/2001/XMLSchema" \
        xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> \
            <soap:Body> \
                <GetVozilo xmlns="http://mydomain.com/apps"> \
                      <vin>' + $("#vin").val() + '</vin> \
                </GetVozilo> \
            </soap:Body> \
        </soap:Envelope>';

        console.log(soapRequest);

                $.ajax({
                    type: "post",
                    url: wsUrl,
                    contentType: "text/xml",
                    dataType: "xml",
                    data: soapRequest,
                    success: processSuccess,
                    error: processError
                });

            });

在控制台中我也收到此错误:

  

选项http://mydomain.com/Service1.asmx 403(禁止)

你能帮帮我吗?

2 个答案:

答案 0 :(得分:1)

有一种方法可以在任何浏览器中从不同的域获取数据。在jQuery中,您可以使用JSONP。 更多信息:http://www.jquery-tutorial.net/ajax/same-origin-policy/

答案 1 :(得分:0)

听起来非常像这是因为same origin policy

您不能将ajax-requets发送到另一个域(在您的情况下为localhost vs 84.255.246.99:8084),而不是执行脚本。我假设您在chrome中添加了某种异常规则,因此它适用于您的浏览器。

要检查这一点,使用firebug或非工作浏览器的开发者控制台来检查响应标头 - 你可能会发现这样的事情:

X-Frame-Options:sameorigin