wcf - JQuery ajax JSONP跨域时POST改为GET

标签 wcf jquery jsonp

我有一个 WCF 服务正在等待 POST。使用 Fiddler,我发现在跨域情况下,我的 POST 请求被更改为 GET,这会导致服务器出现错误 405。

$.ajax({
    type: "POST",
    url: "http://blah/blah.svc/Test",
    data: JSON.stringify("{ 'WebUserID': 4 }"),
    dataType: "jsonp",  // from server
    contentType: "application/json; charset=utf-8", // to server
    success: function (data, status, xhr) {
        alert("success--");
    }
});

有人能解释一下吗?

谢谢

最佳答案

没有 POST 和 JSONP。 JSONP 的工作原理是在 DOM 中创建一个新的脚本标签,该标签向服务器发送 GET 请求。您为 jQuery.ajax 提供了两个不兼容的参数(POST、jsonp),而 jQuery 选择了其中之一。

一项更新:您可以使用 CORS(跨源资源共享)之类的功能来启用对跨域服务的非 GET 请求。 WCF 不支持开箱即用,但我在 http://blogs.msdn.com/b/carlosfigueira/archive/2012/05/15/implementing-cors-support-in-wcf.aspx 上写了一篇关于在 WCF 中实现它的文章。 .

关于wcf - JQuery ajax JSONP跨域时POST改为GET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10521098/

相关文章:

WCF用户名身份验证和故障契约(Contract)

c# - 两个不同应用程序之间的通信

javascript - <form> 和 Jquery ajax 错误

javascript - 我希望为任何请求我的第一个网站的人设置我的第二个网站的 cookie

javascript - 如何使用混合面板 API?

javascript - 将 JSON 结果添加到 HTML

c# - WCF 实时视频流

c# - Unity.Wcf/没有实现继承的抽象成员并且没有找到合适的方法来覆盖

jquery - 如何使用 AJAX 功能在 Magnific Popup 中加载另一个 HTML 文件?

jquery - jquery中如何选择元素的祖 parent