从jQuery到WCF服务的POST在Chrome,Firefox中运行但在IE中不起作用(CORS问题)

我正在尝试从jQuery / knockout web应用程序发布搜索请求。 我按照在WCF中实现CORS的说明进行了操作,并在服务中添加了以下内容:

  [OperationContract] [WebInvoke(Method = "OPTIONS", UriTemplate = "*")] public void GetOptions() { } 

搜索请求在Chrome和Firefox中运行良好。 Chrome发送OPTIONS请求,该请求成功处理( 200 )并且access-control标头位于响应中,然后它发送POST ,返回搜索结果。 因此CORS预检工作正常。

但IE是一个不同的故事。 它还发送成功处理的OPTIONS请求,并且access-control头在响应中,但它只是…停止。 它之后不发送POST请求,并且在开发人员工具中具有(aborted)状态。

控制台有XMLHttpRequest: Network Error 0x80070005, Access is denied.OPTIONS请求的状态是200 ,它从来没有(据我所知)甚至尝试POST 。 所以我甚至都不知道被拒绝了什么。

我把头发拉到这里。 很明显,这三种浏览器都出现了问题,但为什么只有IE呢? 这些是我添加的标题:

 requiredHeaders.Add("Access-Control-Allow-Origin", "*"); requiredHeaders.Add("Access-Control-Allow-Methods", "POST,GET,PUT,DELETE,OPTIONS"); requiredHeaders.Add("Access-Control-Allow-Headers", "X-Requested-With,Content-Type,Accept"); requiredHeaders.Add("Access-Control-Max-Age", "1728000"); 

这是客户端的要求:

 $.ajax({ url: serviceUrl + "ExemptServices.svc/json/search", method: "POST", contentType: "application/json", data: JSON.stringify(ko.mapping.toJS(self.Criteria)), success: function (response) { self.SearchResults(response.ResultData); }, error: function (jqXHR, textStatus, errorThrown) { alert("Error searching." + errorThrown); } }); 

我还应该提到Web和WCF服务器都位于本地Intranet区域,并且所有内容都在同一个内部网络上,包括客户端。

这是来自提琴手的日志。 只有OPTIONS请求,没有尝试执行POST

 OPTIONS http://ecydevws2/ustservice/ExemptServices.svc/json/search HTTP/1.1 Accept: */* Origin: http://ecyapdevtcp Access-Control-Request-Method: POST Access-Control-Request-Headers: content-type, accept Accept-Encoding: gzip, deflate User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko Host: ecydevws2 Content-Length: 0 Connection: Keep-Alive Pragma: no-cache HTTP/1.1 200 OK Cache-Control: private Content-Length: 0 Server: Microsoft-IIS/7.5 X-AspNet-Version: 4.0.30319 Access-Control-Allow-Origin: * Access-Control-Allow-Methods: POST,GET,PUT,DELETE,OPTIONS Access-Control-Allow-Headers: X-Requested-With,Content-Type,Accept Access-Control-Max-Age: 1728000 Set-Cookie: ASP.NET_SessionId=z35robabmzflsyp0l1xl0qey; path=/; HttpOnly X-Powered-By: ASP.NET Date: Mon, 25 Jul 2016 17:49:43 GMT