delphi 代理服务器 如何在HTML中加html代码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi 代理服务器 如何在HTML中加html代码相关的知识,希望对你有一定的参考价值。
我使用ClientSocket ServerSocket
rec_bytes: integer; 传回的数据块长度
rec_Buffer: array[0..2047] of char; 传回的数据块缓冲区
请写出源代码
就是用ClientSocket ServerSocket 控件建立一个代理服务器,使其在向被代理端发送网页代码(html代码)中增加一段javascript代码。
我用你所说的写了但是不行寻找不到!
你要做的就是分析html格式
javascript代码不是随意能加的,一般是加入到 <body>后面,他每发一个包你就pos一下有没有<body>,有,就在后面插入内容,然后再返回给真正客户。
拼接过程很简单
procedure DataRecvd(pData:array of char);
var
s:string;
i:integer;
begin
s := pData;
i := pos('<body>',s);
if i<>0 then
begin
s := copy(s,1,i+7)+'<javascript..>'+copy(s,i+8,length(s));
StrPcopy(pData,s,length(s));
end;
end;
难的地方是加入规则比较复杂,html有很多语法,你要进行分析,不能随意乱加。另一个一个tcp包是有大小限制的,还要考虑组包后大小。我以前做过这种东西,就是电信用的把广告代码插入到用户的网页里面,不过我做的是linux下的C写的。
在 Sencha Touch 2 中加载商店时,如何停止附加的 OPTIONS http 请求?
【中文标题】在 Sencha Touch 2 中加载商店时,如何停止附加的 OPTIONS http 请求?【英文标题】:When loading a store in Sencha Touch 2, how can I stop the additional OPTIONS http request? 【发布时间】:2012-04-19 20:16:51 【问题描述】:我正在使用 Sencha Touch 2 编写一个应用程序,作为其中的一部分,我有许多使用 ajax 代理和 json 阅读器从我的外部 Web 服务自动加载的商店。该服务托管在与客户端不同的域上,因此我必须在服务器上设置 Access-Control-Allow-Origin 才能使其正常工作。
在这个设置下一切都很好,但是我使用 Fiddler 来查看请求性能,我注意到我的 web 服务的每个调用实际上都会发出两次。一次作为 OPTIONS 请求,然后再次作为预期的 GET。据我所知,OPTIONS 请求没有任何用处 - 至少在我的设置中 - 所以我想摆脱它以提高加载性能。
有人知道这是怎么回事吗?如果我可以在代理上设置一个可以将其关闭的配置,那就太好了,但我还没有在 e 上找到。
感谢收看!
【问题讨论】:
【参考方案1】:我想通了,这一切都与 Sencha 及其 ajax 调用一起传递的 x-requested-with 标头有关。这篇博文 (http://remysharp.com/2011/04/21/getting-cors-working/) 详细介绍,但简短的版本是,在一个奇怪的功能中,浏览器会发出预先航班选项仅在您在请求中包含任何自定义标头时检查。如果您没有在请求中添加任何标头并保持原样,则 GET 将顺利通过,无需检查 OPTIONS。
我在源代码中进行了挖掘,发现 Sencha 实际上确实有一个配置来控制是否发送 x-requested-with ,它在正常使用中并没有很暴露。
Ext.Ajax.setUseDefaultXhrHeader(false);
我只是在请求发出之前设置了它,它会丢弃 x-requested-with,只有 GET 会发出。
【讨论】:
【参考方案2】:您需要 OPTIONS 请求,因为您正在访问来自不同域的数据。选项调用它用于获取 Access-Control-Allow-Origin 参数的值。如果未发出 OPTIONS 请求,则跨域将不起作用。
【讨论】:
真的是绝对有必要,还是只是作为安全检查,以防浏览器无法在实物上发货?我问是因为我使用 jQuery 制作了类似的应用程序(实际上使用相同的 web 服务),并且当从那里进行跨域 ajax 调用时,它直接进入 GET 请求,并且从不进行 OPTIONS 检查。以上是关于delphi 代理服务器 如何在HTML中加html代码的主要内容,如果未能解决你的问题,请参考以下文章
如何在android 7中加载html之前在webview中注入javascript脚本
Delphi的基于接口(IInterface)的多播监听器模式(观察者模式 ),利用RTTI实现Delphi的多播事件代理研究