CORS 405(不允许的方法)

Posted

技术标签:

【中文标题】CORS 405(不允许的方法)【英文标题】:CORS 405 (Method Not Allowed) 【发布时间】:2014-01-09 00:38:15 【问题描述】:

我打算使用 Ajax 向肥皂网络服务发送跨域请求 web服务的url是:http://example1.asmx?op=GetVOD

我的代码:

var url = 'http://example1.asmx?op=GetVOD';
var xhr = new XMLHttpRequest();
var strRequest = "<?xml version='1.0' encoding='utf-8'?>" +
"<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>" +
  "<soap:Body>" +
    "<getVODTypeList xmlns='http://tv21.com/' />" + 
  "</soap:Body>" +
"</soap:Envelope>"
xhr.open('POST', url, true);
xhr.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xhr.setRequestHeader("SOAPAction", "http://tv21.com/getVOD");
xhr.send(strRequest);

在 IIS 7 服务器端,我已经将这些行添加到文件 web.config

<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,OPTIONS" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />

当我在 Chrome 上运行客户端代码时,出现 405 错误:

http://example1.asmx?op=GetVOD 405 (Method Not Allowed)
http://example1.asmx?op=GetVOD Invalid HTTP status code 405

有人知道怎么解决吗?

提前致谢

【问题讨论】:

【参考方案1】:

听起来 Web DAV 正在妨碍您。这是删除它的配置:

http://brockallen.com/2012/10/18/cors-iis-and-webdav/

【讨论】:

感谢您的回答,但不幸的是它对我不起作用(我使用的是 IIS 7.5)。经过 2 天的研究,我发现避免“不允许 405 方法”的唯一可行解决方案是在 Application_BeginRequest 方法中定义 CORS 标头,如本答案 ***.com/a/14631068/827168 中所述

以上是关于CORS 405(不允许的方法)的主要内容,如果未能解决你的问题,请参考以下文章

修复不同本地主机之间的“cors”请求。 405(不允许的方法)

CORS 预检的响应是 405(不允许的方法)错误

Angular $http CORS 405 方法不允许

CORS自定义程序不起作用405方法不允许

Django/DRF - 405 方法不允许删除操作

错误 405 - IIS Express 10 不允许使用 CORS for Web API 的方法