实时uri翻译的HTML内容在C/ c++
Realtime URI-translation of HTML content in C/C++
为了开发自定义反向代理(用c++编写),我想对HTML内容中的uri进行实时翻译。例如,如果我想使用http://my-reverse-proxy/myserver
访问http://myserver/
上的资源,则需要修改http://myserver/somecontent1.ext
或/somecontent2.ext
等所有绝对和顶层链接。
一个HTML标签
<img src="/sample.png">
因此将被翻译成
<img src="/myserver/sample.png">
在我看来,有两种方法:
1)使用正则表达式和字符串替换来查找所有相关的HTML标签及其路径,并使用捕获组进行一些字符串替换。
2)解析整个HTML内容,在解析树上进行一些转换,并将结果漂亮地打印回一个有效的HTML资源。
这就是这个问题的全部内容:你有没有任何经验,什么解决方案可能更快,甚至更合理?你知道我可以用什么框架来避免重复工作吗?因为这个过程以后也应该用于基于CSS和xml的资源,所以它不应该是一个依赖于html的解决方案。
提前感谢!
代理服务器通常作为服务器工作。它们处理所有HTTP请求,修改请求的url,然后将修改后的请求传递给另一端的服务器。
你应该坚持这个范例。这比处理文件本身要简单和有效得多。任何正在实时完成的事情都可以在请求点完成。
还有一个问题:为什么要使用自定义反向代理?这样的事情已经存在了。
相关文章:
- 如何确定2个URI(路径)是否属于同一分区或卷
- 如何从字符串创建一个web::uri以放入client.connect()
- QT4 > QT5 for uri.queryItems();
- 将 URI 转换为路径
- 如何将应用程序URI转换为普通文件路径
- 如何使用http:uri方案启动默认的Web浏览器并使用Shellexecute访问主页
- 将ref类对象(Uri^)作为本机指针参数(IUriRuntimeClass*)传递
- 每个新客户端的 GStreamer 和 URI 查询参数提取
- 源代码中的URI
- URI 1848 解决方案
- 在Windows 8上共享应用程序URI方案注册
- 如何将 URI 列表编码为字符串?
- QPlainTextEdit dragEnterEvent 不接受 text/uri-list mime 类型
- C++ REST SDK 中的 URI 编码 ( "Casablanca" )
- 确定与 URI 方案关联的默认图标
- 如何在卡萨布兰卡优雅地解析URI
- 为什么用c++代码编写的普通URI可以工作?
- (Qt或其他)拖放数据的mime类型的uri-list与协议http或ftp在Windows桌面或explorer.ex
- 实时uri翻译的HTML内容在C/ c++
- 最短路径- URI在线判断1640