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容器,如下:
image

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容器,如下:
image

posted @ 2025-06-08 14:00  sunpeiyu  阅读(11)  评论(0)    收藏  举报