Web服务器设置Access-Control-Allow-Headers

use*_*814 3 asp.net-ajax

我在asp.net中创建了一个Web服务,并试图从域内的本地机器的html文件中访问它.

我收到了这个错误

XMLHttpRequest无法加载http://10.112.37.31/amanopoc/Service1.asmx.请求标头字段Access-Control-Allow-Headers不允许使用SOAPAction.

try {

if (window.XMLHttpRequest)

  {// code for IE7+, Firefox, Chrome, Opera, Safari

  xmlhttp=new XMLHttpRequest();

  }

else

  {// code for IE6, IE5

  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

  }

}

catch (e) 

{

    xmlhttp = false; 

}


if( xmlhttp ) 

{



 xmlhttp.open ('POST', postUrl, true);

xmlhttp.onreadystatechange = function() 

{ 





if( xmlhttp.readyState == 4 ) {

 if (xmlhttp.status !=404) 

 {

//alert(xmlhttp.responseText);

//alert("TEST 1");

  var xmlDoc = xmlhttp.responseText;

  if(xmlDoc)

  {

    var x=xmlhttp.responseXML.selectSingleNode("//ObjectToXmlResult").text;

    //var y=x.getElementByTagName("HelloWorldResult");

    alert(x);

  }

  else

  {

    alert("xmlDoc is null");

  }

 }

 else

 {

  alert("xmlhttp.status =" + xmlhttp.status );

 }

} 

};





 xmlhttp.setRequestHeader('Content-Type', 'text/xml; charset=utf-8'); 

 xmlhttp.setRequestHeader("SOAPAction", soapActionUrl);

 xmlhttp.setRequestHeader("Content-Length", soapHeader.length );  

 xmlhttp.send(soapHeader);

}
Run Code Online (Sandbox Code Playgroud)

可以任何

rob*_*rob 6

在您的服务器上设置以下标头

Access-Control-Allow-Headers : SOAPAction
Run Code Online (Sandbox Code Playgroud)

你可能也需要

Access-Control-Allow-Origin : *
Access-Control-Allow-Methods : POST,GET,OPTIONS
Run Code Online (Sandbox Code Playgroud)

最后两个需要根据您的需求量身定制,但上述值应该让您工作.