解决jq ajax 405,[WebAPI][CORS]透过jQuery Ajax CORS 跨 Domain 传递 OPTIONS Method 遇到 405 Method Not Allowed...

小喵前一篇【WebAPI 设定多组 (Multiple) 跨 Domain】,测试实主要是透过 jQuery 的 getJSON 来处理,实际上进一部使用 $.Ajax 的时候,又遇到了【Status Code : 405 Method Not Allowed】的状况。那么这个状况到底要如何处理呢?我们看下去~

缘起

小喵前一篇【WebAPI 设定多组 (Multiple) 跨 Domain】,测试实主要是透过 jQuery 的 getJSON 来处理,实际上进一部使用 $.Ajax 的时候,又遇到了【Status Code : 405 Method Not Allowed】的状况。那么这个状况到底要如何处理呢?我们看下去~

jQuery Ajax CORS OPTIONS

当我们使用 jQuery 的 $.Ajax ,并且他是透过 CORS 跨网域 (Domain) 调用远端的 Web API, WCF, …,无论我们在使用 Ajax 时设定 type 是 GET / POST ,实际上观察 Ajax 会先使用 OPTIONS 这个 Method 去问这个远端的资源是否可以使用,同时传递 Header  Origin 去问是否可以进行。如果可以允许,然后才是 type 里面设定的 Method 来进行访问。

WebAPI Controller

当我们访问的远端资源是【WebAPI】,WebAPI 的特性就会在 Controller 里面去找对应的 Action (Request Method),但是我们并没有撰写【OPTIONSxxxx】的 Function 在 Controller 里面,于是就返回【Status Code : 405 Method Not Allowed】。

WebAPI 解决方式:在 WebAPI 中新增【OPTIONSxxxx】

在了解原因之后,处理方式就很简单了,写个针对 OPTIONS 这样 Action 的 Function,回传值内容不重要,回传个简单的字符串即可

因此小喵在 WebAPI 中,新增以下的 Action 对应 Function,让他正常的响应 Status : 200,那么 jQuery 的 Ajax 就可以继续下去,执行 type 设定的 Method

Public Function OPTIONSValue() As String

Return "OPTIONS"

End Function

001_thumb.jpg

末记

这篇主要的对象,远端服务的方式是【WebAPI】,在寻求相关问题的解决方式过程中,发现除了【WebAPI】以外,其实 WCF 也会有类似的问题【Status Code : 405 Method Not Allowed】,解决的方式不太相同,不过这就不是本编要讨论的范围内了。

以下是签名:

欢迎转贴本站的文章,不过请在贴文主旨上加上【转贴】,并在文章中附上本篇的超链接与站名【topcat 姗舞之间的极度凝聚】,感恩大家的配合。

小喵大部分的文章会以小喵熟悉的语言 VB.NET 撰写,如果您需要 C# 的 Code,也许您可以试着用线上的工具进行转换,这里提供几个参考

http://converter.telerik.com/

http://www.carlosag.net/tools/codetranslator/

http://www.developerfusion.com/tools/convert/vb-to-csharp/

2008422112011393.gif

Visual Studio and Development Technologies

(2005~Now)

5ddb96ed501fa.jpg

topcat

Blog:http://www.dotblogs.com.tw/topcat

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值