HttpServletResponse响应页面流+nginx+iframe实现嵌入页面
HttpServletResponse实现响应页面流
/**
* @className: ResponseStreamCtl
* @Description: TODO
* @version: v1.8.0
* @author: SUNPEIYU
* @date: 2025/6/8 12:31
*/
@Controller
public class ResponseStreamCtl {
@GetMapping("/test/out/Stream")
public void testStream(HttpServletResponse response) throws IOException {
// 设置允许跨域的响应头
response.setHeader("Access-Control-Allow-Origin", "*"); // 或者指定特定的域名
response.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
response.setHeader("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With, remember-me");
response.setHeader("Access-Control-Allow-Credentials", "true");
// 设置内容类型和字符编码
response.setContentType("text/html;charset=UTF-8");
// 写入响应体
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head><title>页面标题</title></head>");
out.println("<body>");
out.println("<h5 style='color:red;display:flex;justify-content:center;align-items:center;height:80vh;'>后台服务响应到iframe的数据</h5>");
out.println("</body>");
out.println("</html>");
}
}
直接访问tomcat容器,如下:

nginx配置流式输出
#user nobody;
worker_processes 1;
events {
worker_connections 1024;
}
http {
server {
listen 8088;
server_name localhost;
location ^~ /testiframe/ {
root F:/software/nginx-1.28.0/html/testiframe/;
}
location ^~ /test/ {
proxy_pass http://localhost:3831/test/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
iframe显示页面
编写index.html,以nginx为容器。
页面路径:F:\software\nginx-1.28.0\html\testiframe\index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>嵌入iframe示例</title>
</head>
<body>
<h2>嵌入iframe</h2>
<iframe src="http://localhost:8088/test/out/Stream" width="600" height="400"></iframe>
</body>
</html>
访问nginx容器,如下:


浙公网安备 33010602011771号