是否可以在Javascript中对WCF服务进行跨站点调用?
我不介意它是POST还是GET.
但我听说这些天浏览器不允许使用POST或GET进行跨站点调用.
我怎样才能绕过这个并仍然调用WCF服务?
你无法绕过浏览器的跨网站脚本拦截器.这些阻止程序阻止XMLHTTPRequest发生到任何域,但加载包含脚本或页面的域.
也就是说,有一个常用的解决方法:使用JavaScript在DOM中编写一个新条目,引用一个跨站点URL的src.您将所有RPC方法参数传递给此"脚本",该脚本将返回将要执行的一些JavaScript,告诉您成功或失败.
没有办法以这种方式执行POST,src URL必须是GET,因此您可以通过这种方式传递参数.我不确定WCF是否有"仅限GET"访问方法.并且,由于浏览器希望远程标记的结果是有效的JavaScript对象,因此您必须确保您的WCF服务也遵守该标准,否则您将收到JavaScript错误.
绕过跨站点脚本的另一种常用方法是为您的请求编写代理.换句话说,如果要从example.com上托管的脚本访问域test.com,请在example.com上创建一些URL,以适当的方式将请求代理到test.com.
对于您的示例,假设WCF没有自己的跨站点脚本限制,代理可能是正确的答案.