当我尝试使用WCF服务时,Ajax方法出现405错误

时间:2015-10-03 17:31:37

标签: jquery ajax wcf cors

我有一个启用的CORS WCF服务,另一方面,我有一个Rails应用程序,我试图通过Ajax发出请求(我在浏览器调试控制台上手动运行):

function GetBookId(){

$.ajax({
   type: "GET",
   url:  "http://localhost:8369/BookService.svc/Book/3",
   contentType: "json",
   dataType: "json",
   xhrFields: {
      withCredentials: false 
    },
   headers: "GET",
   //processData: true,
   success: function (data) {
    var jsonData = JSON.stringify(data);
    var objData = $.parseJSON(jsonData);
    var bookId = objData.BookId;
    var isbn = objData.ISBN;
    },
    error: function (xhr) {
        alert(xhr.responseText);
    }
  });
} 

WCF服务在端口8369运行,我的Rails应用程序在端口3000,因此浏览器抱怨错误405的跨域或跨源预检请求。正如我所说,WCF服务已启用接收GET,POST,PUT和DELETE方法:

...
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
      </customHeaders>
    </httpProtocol>
...

调试或观察请求标头后,我发现当我使用GetBookId()方法时,发送OPTIONS作为请求方法而不是GET或POST,所以得到

  

XMLHttpRequest无法加载   http://localhost:8369/BookService.svc/Book/3。对飞行前的反应   具有无效的HTTP状态代码405

在Firefox开发者工具中,我将请求标题编辑为GET方法并再次发送。响应是200.所以我想问题就是这样。 jQuery ajax方法发送错误的方法,如何使用此方法正确发送?

0 个答案:

没有答案