是否可以使用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没有自己的跨站点脚本限制,则代理可能是正确的答案。