using system;
using system.collections.generic;
using system.io;
using system.linq;
using system.net;
using system.text;
using system.web;
using system.web.sessionstate;
namespace gl
{
public class crossdomainhandler:ihttpmodule, irequiressessionstate
{
///
/// 释放内存
///
public void dispose()
{
}
///
/// 开始请求
///
///
public void init(httpapplication context)
{
//页面开始请求时,绑定时间
context.beginrequest += new eventhandler(context_prerequesthandlerexecute);
}
///
/// 请求处理
///
///
///
void context_prerequesthandlerexecute(object sender, eventargs e)
{
httpapplication app = (httpapplication)sender;
httpcontext context = app.context;
context.response.appendheader(charset, utf-8);
context.response.appendheader(defaultcharset, utf-8);
context.response.appendheader(content-type, text/html; charset=utf-8);
var relativeaddr = context.request.apprelativecurrentexecutionfilepath.remove(0, 2);
if (relativeaddr.startswith(server))
{
var url = string.concat(, relativeaddr.substring(relativeaddr.indexof('/')));
httpwebrequest request = webrequest.create(url) as httpwebrequest;
request.method = post;
request.contenttype = application/x-www-form-urlencoded;
var rs = request.getrequeststream();
var sb = new stringbuilder(a=a&);
context.request.form.allkeys.tolist().foreach(name =>
{
sb.appendformat({0}={1}&, name, context.request.form[name]);
});
var str = sb.tostring();
if(str.contains('&'))
{
str = str.substring(0, str.length - 1);
}
var sw = new streamwriter(rs, encoding.utf8);
sw.write(sb.tostring());
sw.close();
request.timeout = 60 * 1000;
var response = request.getresponse() as httpwebresponse;
var ps = response.getresponsestream();
var reader = new streamreader(ps, encoding.utf8);
string html = reader.readtoend();
ps.close();
context.response.write(html);
context.response.end();
}
}
}
}
更多信息请查看IT技术专栏