是否可以在 Javascript 中对 WCF 服务进行跨站点调用?
我不介意它是 POST 还是 GET。
但我听说最近,浏览器不允许使用 POST 或 GET 进行跨站点调用。
如何避免这种情况并仍然调用 WCF 服务?
最佳答案
要绕过浏览器的跨站点脚本拦截器,您无能为力。这些阻止程序阻止 XMLHTTPRequest 发生在除加载包含脚本或页面的域之外的任何域中。
也就是说,有一种常用的解决方法:使用 JavaScript 在 DOM 中写入一个新条目,该条目引用作为跨站点 URL 的 src。您会将所有 RPC 方法参数传递给此“脚本”,该“脚本”将返回一些将要执行的 JavaScript,告诉您成功或失败。
无法以这种方式执行 POST,src URL 必须是 GET,因此您可以通过这种方式传递参数。我不确定 WCF 是否具有“仅获取”访问方法。而且,由于浏览器期望远程标记的结果是有效的 JavaScript 对象,因此您必须确保您的 WCF 服务也遵守这一点,否则您将收到 JavaScript 错误。
另一种规避跨站点脚本的常用方法是为您的请求编写代理。换句话说,如果您想从 example.com 上托管的脚本访问域 test.com,请在 example.com 上创建一些 URL,以正确的方式将请求代理到 test.com。
对于您的示例,代理可能是正确的答案,假设 WCF 没有它自己的跨站点脚本限制。
关于javascript - 对 WCF 服务的跨站点 ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/555595/