在 WCF 服务上启用 CORS。获取 HTTP 405:不允许的方法

Posted

技术标签:

【中文标题】在 WCF 服务上启用 CORS。获取 HTTP 405:不允许的方法【英文标题】:Enable CORS on WCF Service. Get HTTP 405: Method Not Allowed 【发布时间】:2014-04-27 23:43:40 【问题描述】:

我正在尝试在 WCF 服务上启用 CORS。当我尝试从客户端发送请求时,请求是使用 OPTIONS 动词发送的。我总是收到HTTP 405: Method not allowed 错误

如果我尝试使用 Fiddler 并使用 POST 动词创建相同的请求,则响应似乎是正确的。

我尝试在教程的帮助下删除webDAV http://brockallen.com/2012/10/18/cors-iis-and-webdav/ 但它似乎不起作用。

参考教程http://enable-cors.org/server_wcf.html,我已更新我的 WCF 以启用 CORS。我不确定出了什么问题。响应似乎有 CORS 标头

任何帮助将不胜感激。

PS:我不想让这个问题变得非常大和令人困惑。如果您想查看我的配置,请告诉我,我可以分享它

【问题讨论】:

与其只为预检请求添加所需的标头并确保不阻止 OPTIONS 消息,不如在 WCF 中实现 CORS。遗憾的是,OOTB WCF 仅带有与 ASP 网站兼容的行为。 productiverage.com/wcf-cors-plus-json-rest-complete-example 【参考方案1】:

查看此链接http://praneeth4victory.wordpress.com/2011/09/29/405-method-not-allowed/:

protected void Application_BeginRequest(object sender, EventArgs e)

          HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
          if (HttpContext.Current.Request.HttpMethod == "OPTIONS")

               HttpContext.Current.Response.AddHeader("Cache-Control", "no-cache");
               HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST");
               HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept");
               HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
               HttpContext.Current.Response.End();
              

【讨论】:

感谢您的回复。但这无济于事。至少现在我没有收到 HTTP 405。我收到了 HTTP 200 但没有回复。响应 Content-Length 始终为 0 @Ron 我也有同样的问题。你有想过吗? @Ron 没关系。我最终做的是将 Access-Control-Allow-Origin 移至 Web 配置。

以上是关于在 WCF 服务上启用 CORS。获取 HTTP 405:不允许的方法的主要内容,如果未能解决你的问题,请参考以下文章

CORS(跨源资源共享)https 不工作(IIS 托管 WCF 休息启用端点)

启用从 jQuery ajax 到不在 IIS 中托管的 WCF 服务的 CORS POST

离子应用程序无法使用 $http 连接启用 cors 的服务器

在 Java Web 服务中启用 CORS

是否可以在 IE 中进行从 https 到 http 的跨域请求?

在 WCF REST Web 服务上启用 HTTPS