我有一个启用的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方法发送错误的方法,如何使用此方法正确发送?