欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

ajax跨域访问代理文件下载(asp、php、asp.net)

程序员文章站 2022-04-30 16:13:59
...
最近做东西遇到了ajax跨域(cross domain)访问的问题,最后采用了Application Proxies 方式解决,即在本域内放置一个代理文件(视本域支持的开发语言选定asp、asp.net或是其他),此代理文件将url参数(QueryString)发送到目标域对应页面获取html代码,然后输出。ajax直接访问这个代理文件以达到跨域的目的。
基于asp.net的跨域访问代理文件c#代码如下:
ajax跨域访问代理文件下载(asp、php、asp.net)@ Page Language="C#" AutoEventWireup="true"  ResponseEncoding="utf-8" %>
ajax跨域访问代理文件下载(asp、php、asp.net)
@ Import Namespace=System.Net %>
ajax跨域访问代理文件下载(asp、php、asp.net)
@ Import Namespace=System.IO %>
ajax跨域访问代理文件下载(asp、php、asp.net)
ajax跨域访问代理文件下载(asp、php、asp.net)
script runat="server">
ajax跨域访问代理文件下载(asp、php、asp.net)    
protected override void OnLoad(EventArgs e)
ajax跨域访问代理文件下载(asp、php、asp.net)    
{
ajax跨域访问代理文件下载(asp、php、asp.net)        
base.OnLoad(e);
ajax跨域访问代理文件下载(asp、php、asp.net)
ajax跨域访问代理文件下载(asp、php、asp.net)        
string sourceUrl = "http://devspy.net";
ajax跨域访问代理文件下载(asp、php、asp.net)        
this.Page.Response.Write(TransferHtmlPage(string.Concat(sourceUrl, "?"this.Page.Request.QueryString)));
ajax跨域访问代理文件下载(asp、php、asp.net)    }

ajax跨域访问代理文件下载(asp、php、asp.net)    
ajax跨域访问代理文件下载(asp、php、asp.net)    
public string TransferHtmlPage(string url)
ajax跨域访问代理文件下载(asp、php、asp.net)    
{
ajax跨域访问代理文件下载(asp、php、asp.net)        
string result = string.Empty;
ajax跨域访问代理文件下载(asp、php、asp.net)        
try
ajax跨域访问代理文件下载(asp、php、asp.net)        
{            
ajax跨域访问代理文件下载(asp、php、asp.net)            HttpWebRequest request 
= (HttpWebRequest)WebRequest.Create(url);
ajax跨域访问代理文件下载(asp、php、asp.net)            HttpWebResponse response 
= (HttpWebResponse)request.GetResponse();
ajax跨域访问代理文件下载(asp、php、asp.net)            StreamReader reader 
= new StreamReader(response.GetResponseStream(), Encoding.UTF8);
ajax跨域访问代理文件下载(asp、php、asp.net)            result 
= reader.ReadToEnd();
ajax跨域访问代理文件下载(asp、php、asp.net)        }

ajax跨域访问代理文件下载(asp、php、asp.net)        
catch(Exception ex)
ajax跨域访问代理文件下载(asp、php、asp.net)        
{
ajax跨域访问代理文件下载(asp、php、asp.net)            
return string.Format(@"

服务器获取文件内容出错:{0}

", ex.Message);
ajax跨域访问代理文件下载(asp、php、asp.net)        }

ajax跨域访问代理文件下载(asp、php、asp.net)
ajax跨域访问代理文件下载(asp、php、asp.net)        
if (!CheckVersionWaterMark(result))
ajax跨域访问代理文件下载(asp、php、asp.net)            
return @"

版本水印失效,请联系相关技术人员。

";
ajax跨域访问代理文件下载(asp、php、asp.net)        
ajax跨域访问代理文件下载(asp、php、asp.net)        
return result;
ajax跨域访问代理文件下载(asp、php、asp.net)    }

ajax跨域访问代理文件下载(asp、php、asp.net)    
ajax跨域访问代理文件下载(asp、php、asp.net)    
public bool CheckVersionWaterMark(string inputString)
ajax跨域访问代理文件下载(asp、php、asp.net)    
{
ajax跨域访问代理文件下载(asp、php、asp.net)        
return true;//不验证水印了
ajax跨域访问代理文件下载(asp、php、asp.net)        
//string pattern = "WaterMark";
ajax跨域访问代理文件下载(asp、php、asp.net)        
//return Regex.IsMatch(inputString, pattern, RegexOptions.IgnoreCase);
ajax跨域访问代理文件下载(asp、php、asp.net)
    }

ajax跨域访问代理文件下载(asp、php、asp.net)
ajax跨域访问代理文件下载(asp、php、asp.net)
script>

另外还有基于asp和php的实现,不再列出,感兴趣的可以下载包含这三个文件的压缩包:
http://files.cnblogs.com/cncxz/ajaxProxy.rar