jQuery   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了jQuery .ajax()POST Request在RESTful WCF上抛出405(方法不允许)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我发送一个发送请求到一个RESTFUL WCF服务应用程序。我可以通过fiddler成功发送POST请求。

但是,当我通过jQuery Ajax方法执行此操作时,该函数将以下内容返回给Chrome开发者控制台:

OPTIONS http://www.example.com/testservice/service1.svc/GetData 405 (Method Not Allowed) jquery.min.js:6

但是之后的第二个日志之后:

Object {d: "You entered 10"} testpost.html:16

这告诉我的是,jQuery正在发送OPTIONS请求,该请求失败,然后发送返回预期数据的POST请求。

我的jQuery代码

$.ajax() {        
type: "POST",//GET or POST or PUT or deletE verb 
    url: "http://www.example.com/testservice/service1.svc/GetData",// LOCATIOn of the service      
    data: '{"value":"10"}',//Data sent to server
    contentType:"application/json",dataType: "json",//Expected data format from server    
    processdata: false,success: function (msg) {//On successfull service call   
        console.log(msg);
    },error: function (xhr) { console.log(xhr.responseText); } // When service call fails             
});

我使用的是jQuery 2.0.2版本。

任何帮助,为什么这个错误发生将是一个很大的帮助。

解决方法

你的代码实际上是尝试制作一个 Cross-domain (CORS)请求,而不是普通的POST。

也就是说:现代浏览器只允许Ajax调用与HTML页面相同的域中的服务。

例:http://www.example.com/myPage.html中的网页只能直接请求http://www.example.com中的服务,例如http://www.example.com/testservice/etc 。如果该服务在其他域中,则浏览器将不会进行直接呼叫(如您所期望的)。相反,它将尝试制作CORS请求。

要简单地说,要执行CORS请求,您的浏览器:

>首先将OPTION请求发送到目标URL
>然后只有当服务器对该OPTION的响应包含adequate headers (Access-Control-Allow-Origin is one of them)以允许CORS请求时,浏览将执行调用(几乎完全一样,如果HTML页面在同一个域)。

>如果预期的标题不来,浏览器就会放弃(就像你这样做)。

如何解决?最简单的方法是在服务器上启用CORS(启用必要的头文件)。

如果您没有对其进行服务器端访问,则可以从其他地方镜像Web服务,然后在那里启用CORS。

大佬总结

以上是大佬教程为你收集整理的jQuery .ajax()POST Request在RESTful WCF上抛出405(方法不允许)全部内容,希望文章能够帮你解决jQuery .ajax()POST Request在RESTful WCF上抛出405(方法不允许)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。