我使用下面的 asp 代码进行 xml 请求
<%
pXML=Server.URLencode(SearchRequest)
set xmlhttp = server.CreateObject("MSXML2.ServerXMLHTTP")
xmlhtt.open "post", http://OutSideDomain/xml_requests , false
xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xmlhttp.send "xml_request=" &pXML
htresult = xmlhttp.responsexml.xml
%>
我尝试用 javascript(Ajax) 编写上面的代码
<script type="text/javascript">
function loadXMLDoc()
{
var xmlHttp;
try
{
xmlHttp=new XMLHttpRequest(); }
catch (e)
{
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
alert("Your browser does not support AJAX!");
return false;
}
}
}
xmlHttp.onreadystatechange=function()
{
if(xmlHttp.readyState==4)
{
alert(xmlHttp.responseText);
}
}
var params ='xml_request=' +'<%=pXML>';
xmlHttp.open("POST","http://OutSideDomain/xml_requests",true);
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.setRequestHeader("Content-length", params.length);
xmlHttp.setRequestHeader("Connection", "close");
xmlHttp.send(params);
}
</script>
上面的 asp 代码工作正常并得到 xml 响应,
但在 javascript 中,我得到的错误是“拒绝访问”,例如 xmlHttp.send(params);
“拒绝访问”是什么问题?,
我在这里从一个 HTTP 到另一个 HTTP 是不可能的......但是那个东西在我的 asp 页面中工作..
我如何解决这个问题?
希望得到您的回应
最佳答案
问题是语境的不同。您的 JavaScript 代码在客户端运行,因此受制于 Same Origin Policy .您的 ASP 代码在服务器端运行,所以它不是。
虽然有 initiatives going on,但您现在基本上不能从客户端执行此操作这将使一些有限的跨站点通信成为可能。目前,您最好继续在服务器端执行此操作(尽管会产生带宽成本)。
或者,如果您尝试访问的来源提供了一个 JSONP接口(interface),你可以使用它。
关于javascript - 如何将服务器端 ASP XmlHttpRequest 代码转换为客户端 JavaScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2306193/