现在的位置: 首页 > 综合 > 正文

Ajax与Atlas(3) 使用服务器中转实现HttpRequest跨站访问

2013年12月10日 ⁄ 综合 ⁄ 共 2486字 ⁄ 字号 评论关闭

前面一篇文章(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;

        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>

这下在IE和FF下测试都通过

抱歉!评论已关闭.