2013-12-20 123 views
2

我打算发送跨域请求,使用Ajax Web服务的URL SOAP Web服务是:http://example1.asmx?op=GetVODCORS 405(不允许的方法)

我的代码:

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的服务器端,我已经这些线当我运行在Chrome上的客户端代码添加到该文件的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" /> 

,我有一个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/

+0

谢谢您的回答,但遗憾的是它并没有为我工作(我使用的是IIS 7.5)。经过2天的研究,我发现避免“405方法不允许”的唯一工作解决方案是在Application_BeginRequest方法中定义CORS头文件,正如本答案中提到的http://stackoverflow.com/a/14631068/ 827168 – pomeh