0

我用 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(禁止)

你能帮我么?

4

2 回答 2

1

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

于 2012-05-04T14:28:50.600 回答
0

听起来很像这是因为同源政策

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

要检查这一点,请使用 firebug 或非工作浏览器的开发者控制台来检查响应标头 - 您可能会发现如下内容:

X-Frame-Options:sameorigin
于 2012-05-04T14:15:32.650 回答