我对启用跨域调用有疑问。
我有一个托管在xyz域中的WCF Rest服务。我能够从Advanced Rest Client,Postman和Fiddler测试这些REST API。我还有一个WPF应用程序,主动调用这些API,这些API托管在不同的域(比如abc域)中,可以很好地获取响应。 但是,当我创建一个新的Angular Web应用程序和一个Windows服务(部署在abc域上),并尝试从这两个组件调用API时,我收到405错误。
有人可以解释一下:
答案 0 :(得分:0)
我认为这里的问题是由preflight request引起的。浏览器会发出此OPTIONS
动词请求,询问服务器是否允许origin以不安全的方式调用API。
如果您的WCF REST服务未处理此请求,则WCF运行时将尝试将请求分派给您的服务实现。
但是,如果运行时没有找到调用此动词的方法,它将返回405 Method Not Allowed
响应。
我过去使用IOperationInvoker实施,通过IOperationBehavior进行安装,从而解决了这个问题。这个article描述了一种略微不同的做法基本相同。