广告位管理系统--跨域广告加载问题
问题一:
跨域采用服务器代理页来中转,请求转投代码如下:
文件:Ad.ashx
//================代理实现=============================
private void RequestProxy()
{
HttpWebRequest clientRequest = (HttpWebRequest)HttpWebRequest.Create(C_URL + Request.Url.Query);
clientRequest.AllowAutoRedirect = false;
clientRequest.Method = Request.RequestType;
int bufferSize = 1024 * 2;
byte[] buffer = new byte[bufferSize];
if (Request.RequestType == "POST")
{
clientRequest.ContentType = Request.ContentType;
clientRequest.ContentLength = Request.ContentLength;
using (Stream postStream = clientRequest.GetRequestStream())
{
postStream.Write(Request.BinaryRead(Request.TotalBytes), 0, Request.TotalBytes);
}
}
//输出数据
using (HttpWebResponse clientResponse = clientRequest.GetResponse() as HttpWebResponse)
{
Response.ContentType = clientResponse.ContentType;
using (Stream stream = clientResponse.GetResponseStream())
{
int readCount = stream.Read(buffer, 0, bufferSize);
while (readCount > 0)
{
Response.OutputStream.Write(buffer, 0, readCount);
readCount = stream.Read(buffer, 0, bufferSize);
}
}
}
}
//===================End==============
问题二:
需要在广告的OnClick事件中记录广告位的点击情况
采用Jquery的$.post来发送onclick相关数据,js代码如下(网站采用gb2312)
$.post("/services/ad.ashx?m=1",{msg:escape( '数据中包含中文需要采用escape编码'),OtherField:'value'});
服务器需要使用 HttpUtility.UrlDecode( Request["msg"],Encoding.GetEncoding("GB2312"))来解码,UrlDecode的Encoding可以指定是GB2312或者Utf-8,结果都是正确的,因为escape在客户端对中文编码后,无论页面使用的是Utf-8还是GB2312其escpae('中文数据') 结果都是一样的,调用$.post会再次使用url编码数据,结果是可表示成-> form:urlEncode( js:escpae('中问数据'))
而escpae后的ASCII字符无论utf-8或GB2312的form:UrlEncode编码多是一样的(注意,JQuery.post采用utf-8对数据进行编码), Request["msg"] 会对数据进行一次解码,而解码后的数据是escape的结果,故还需要使用一次HttpUtility.UrlDecode(....)再次解码--asp.net中的UrlDecode可以解码js的escape编码数据。
------------------------------------
问题三:
采用代理页后客户端的一些信息如IP等,需要打包到url中再次发送,具体打包那些数据看实际需求
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述