0

我正在尝试使用 Javascript 发出 SOAP 请求,但它似乎不起作用。请在下面找到已使用的代码。

URL="http://footballpool.dataaccess.eu/data/info.wso";
xmlStr="<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><AllDefenders xmlns="http://footballpool.dataaccess.eu">   <sCountryName>string</sCountryName></AllDefenders></soap:Body></soap:Envelope>";

jQuery.ajax({
         type: "POST",
         url: URL,
         dataType: "xml",
         processData: false,
         data: xmlStr,
         beforeSend: function(req) {
            req.setRequestHeader("Method", "POST");
            req.setRequestHeader("Content-Type", "text/xml" + "; charset=\"" + "UTF-8" + "\"");
         }
    });

回复:

Object
OPTIONS http://footballpool.dataaccess.eu/data/info.wso 400 (Bad Request)
jquery.js:4 XMLHttpRequest cannot load http://footballpool.dataaccess.eu/data/info.wso. Origin http://www.know7.com is not allowed by Access-Control-Allow-Origin.

我正在尝试从http://footballpool.dataaccess.eu/data/info.wso?op=AllDefenders获得响应

谢谢..

4

3 回答 3

1

你不能像那样从其他域调用一个 url,否则我们都会陷入非常糟糕的手中!你总是需要一个代理来处理你正在做的事情,无论是PHP.NET等,你都会调用那个端点并接收调用并绕过你的 javascript 调用。

您收到跨域错误:

Access-Control-Allow-Origin 不允许来源http://www.know7.com 。

它会告诉你一切...

如果您拥有此域,则可以通过创建cross-domain.xml文件来打开它,并添加一个允许跨域调用的 Html 标头。


他们为您提供了一种获取 JSON 的方法,但他们没有将其发送到一个函数中,因此您总是会收到错误消息:

http://jsbin.com/ivobun/1/edit

因此,除了代理之外,您无能为力。

于 2012-08-24T10:24:08.990 回答
1

除了Endy's answer,您可能还想查看 Mozilla DevNet 上关于跨域资源访问的这篇文章,以及相关检查服务器响应的 HTTP 标头。具体来说,标头的内容Access-Control-Allow-Origin将告诉您服务器管理员允许访问指定资源的域。

https://developer.mozilla.org/en-US/docs/HTTP_access_control

于 2012-08-24T10:24:53.590 回答
0

好像您正在尝试跨域执行请求。这是不允许的,只有 JSONP 是允许的。

于 2012-08-24T10:17:44.500 回答