前面一篇文章(Ajax与Atlas(2) 适用于IE和Firefox的get xmlhttprequest object函数)提到,使用HttpRequest进行跨站访问时会有安全提示,但是实际应用中,这种情况又是存在的,例如:RSS阅读。
为了消除这个提示,在自己的站点内建一个服务器页面来做中转(接上例):
建一个Check163ID.aspx,在Page_Load事件中添加以下代码
string url = "http://reg.163.com/register/checkssn.jsp?username=";
string userName = Request.QueryString["UserName"].Trim();
url += userName;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader readStream = new StreamReader(responseStream, Encoding.Default);
string userName = Request.QueryString["UserName"].Trim();
url += userName;
HttpWebRequest request
= (HttpWebRequest)WebRequest.Create(url);HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader readStream = new StreamReader(responseStream, Encoding.Default);
Response.Write(readStream.ReadToEnd());
response.Close();
readStream.Close();
修改上篇文章的Check163ID.htm,使只访问Check163ID.aspx
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Check 163 ID</title>
<script language="javascript" src="js/Ajax.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
function IDRequest(n)
{
//定义收到服务器的响应后需要执行的JavaScript函数
url=n+document.getElementById('163id').value;//定义网址参数
xmlhttp_request=getXMLRequester();//调用创建XMLHttpRequest的函数
xmlhttp_request.onreadystatechange = doContents;//调用doContents函数
try
{
xmlhttp_request.open('GET', url, true);
}
catch(ex)
{
alert(ex);
}
xmlhttp_request.send(null);
}
function doContents()
{
if (xmlhttp_request.readyState == 4)
{
// 收到完整的服务器响应
if (xmlhttp_request.status == 200)
{
//HTTP服务器响应的值OK
document.getElementById('message').innerHTML = xmlhttp_request.responseText;//将服务器返回的字符串写到页面中ID为message的区域
}
else
{
alert(http_request.status);
}
}
}
</script>
</head>
<body>
<input type="text" id="163id" />
<input type="button" value="校验" onclick="IDRequest('Check163ID.aspx?UserName=')" />
<div id="message"></div>
</body>
</html>
<head>
<title>Check 163 ID</title>
<script language="javascript" src="js/Ajax.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
function IDRequest(n)
{
//定义收到服务器的响应后需要执行的JavaScript函数
url=n+document.getElementById('163id').value;//定义网址参数
xmlhttp_request=getXMLRequester();//调用创建XMLHttpRequest的函数
xmlhttp_request.onreadystatechange = doContents;//调用doContents函数
try
{
xmlhttp_request.open('GET', url, true);
}
catch(ex)
{
alert(ex);
}
xmlhttp_request.send(null);
}
function doContents()
{
if (xmlhttp_request.readyState == 4)
{
// 收到完整的服务器响应
if (xmlhttp_request.status == 200)
{
//HTTP服务器响应的值OK
document.getElementById('message').innerHTML = xmlhttp_request.responseText;//将服务器返回的字符串写到页面中ID为message的区域
}
else
{
alert(http_request.status);
}
}
}
</script>
</head>
<body>
<input type="text" id="163id" />
<input type="button" value="校验" onclick="IDRequest('Check163ID.aspx?UserName=')" />
<div id="message"></div>
</body>
</html>
这下在IE和FF下测试都通过