0

我将其分解为绝对最简单的代码,但这是行不通的。我在我的 web 服务上做了一个简单的 Echo 测试,它将一个字符串作为参数并回显它。我编写了我一直在编写的 javascript 代码,以便在此处访问此方法:

http://jsfiddle.net/stephenbayer/CaHqY/9/

我真的需要知道,为什么我会收到错误,以及为什么我收到的唯一消息是来自 javascript 的错误字符串“Error”。我该如何解决这个问题并让它工作。

这是一个通过 WCF 使用标准 SOAP 运行的 Web 服务,我们有一个客户端请求通过 javascript 进行访问。对我来说听起来很疯狂,但我不认为这会那么困难。我根本找不到任何关于让这些跨域调用正常工作的明确信息。

4

5 回答 5

2

由于同源策略,您无法通过普通 AJAX 进行跨域调用,您需要为此进行JSONP -Call。

也许您可以使用CORS,但您需要小心,因为那样您可能容易受到跨站点脚本的攻击。

于 2012-07-05T14:21:57.560 回答
1

其他人是对的。您必须使用 JSONP 而不是 JSON。

但是有一个替代方案:

不要直接将 ajax 与其他域一起使用,而是将其与您自己的域一起使用,在您的服务器中创建一个新的 Web 服务,例如使用 php。

然后,在您的 php ws 中,您可以调用外部 web 服务,它会工作。使用file_get_contents().

我使用它来使用公共服务器获取地址代码:

$remote_data = @file_get_contents('http://republicavirtual.com.br/web_cep.php?formato=json&cep='.urlencode($_REQUEST['cep']));

echo $remote_data;
于 2012-07-05T14:49:40.850 回答
1

现代浏览器阻止跨域请求以保护用户免受 XSS 攻击。

要处理来自另一个域的数据,您需要以下 4 个解决方案之一:

  • xml 服务器端修改的标头
  • jsonp请求和响应
  • 一个代理,以便您的浏览器认为这两个域是相同的
  • 浏览器中的宽松保护(并非所有浏览器都可以)

请注意,前 2 个解决方案涉及更改 XML 服务器。

于 2012-07-05T14:24:19.533 回答
1

http://james.padolsey.com/javascript/cross-domain-requests-with-jquery

祝你好运

于 2012-07-05T14:24:20.227 回答
0

您的浏览器因为同源策略而停止请求。您只能对加载 javascript 的域创建一个 xhr(即 ajax)。

于 2012-07-05T14:21:55.697 回答