V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
jaredyam
V2EX  ›  NGINX

有没有可能通过一次 POST 静态资源请求同时拿回静态资源和请求时携带的请求体参数?

  •  
  •   jaredyam · 2023-06-01 08:26:53 +08:00 · 1714 次点击
    这是一个创建于 548 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如果必须使用 POST 请求静态资源 URL ,如.../static/,有没有可能通过配置 Nginx 在前端同时拿到static/和发送请求的请求体表单参数?

    望大佬解惑!

    12 条回复    2023-06-02 16:05:37 +08:00
    jswh
        1
    jswh  
       2023-06-01 08:39:33 +08:00
    1. 用 add_header ,把 request body 内容加到 header 里面返回
    2. 用 lua
    没试过,但理论上可行
    wolfie
        2
    wolfie  
       2023-06-01 13:39:40 +08:00
    请求方,自己弄丢了参数是吗。
    sanmaozhao
        3
    sanmaozhao  
       2023-06-01 14:05:21 +08:00
    建议把原始需求(或问题)说出来,分析完了可能不需要采用你问的这个方法
    所谓的“X-Y 问题”
    jaredyam
        4
    jaredyam  
    OP
       2023-06-01 16:24:10 +08:00
    @jswh 这样做的前提是请求是自己发的,那如果不是自己发的呢?可以在保证返回静态资源的同时 body 数据拿回浏览器吗?之前尝试通过 header 写在 Cookies 里是可行的,但是后面准备禁用 JS 读 Cookies 的权限,还有什么替代方案吗?
    jaredyam
        5
    jaredyam  
    OP
       2023-06-01 16:26:55 +08:00
    @wolfie 相当于同一页面有两个前端(页面一套,iframe 一套),iframe 的前端想拿页面前端请求的参数?
    jaredyam
        6
    jaredyam  
    OP
       2023-06-01 16:33:00 +08:00
    @sanmaozhao 一个页面里面包含一个 iframe ,页面有一套前端,iframe 有一套前端,页面发送了一个请求静态资源的 P OST 请求,请求体里携带数据,iframe 期望拿到这个请求携带的数据。可以实现吗?有切入的思路吗?🥲
    wolfie
        7
    wolfie  
       2023-06-01 16:51:00 +08:00
    @jaredyam
    xy 问题 +1

    谁请求的,谁处理。这个事件触发 就不在 iframe 里。
    jaredyam
        8
    jaredyam  
    OP
       2023-06-01 16:59:11 +08:00
    @wolfie 但是页面前端请求的是 iframe 的静态资源,也就是在 Nginx 那边是一个配置文件处理的,就是看怎么弄能让页面请求携带的 body 最后让 iframe 前端读到,我也感觉这个问题就不该出现🥲
    sanmaozhao
        9
    sanmaozhao  
       2023-06-01 17:06:01 +08:00
    发 POST 请求的代码,负责把 请求体+响应体 存到 localStorage ,然后 iframe 去读呗
    差不多就是这个思路,发请求的负责整理数据,然后写道能和 iframe 共享数据的地方
    jaredyam
        10
    jaredyam  
    OP
       2023-06-01 17:21:51 +08:00
    @sanmaozhao 主要问题在于这段代码我这边动不了,但是感觉如果可以的话这个思路应该没问题,感谢!
    thinkershare
        11
    thinkershare  
       2023-06-01 17:24:21 +08:00
    @jaredyam iframe 之间又不是不能通讯,直接用 postMessage 通讯不行吗?走后端你请求的资源又不一定是纯文本,如果是纯文本,可以在 nginx 用脚本包一层,但是静态二进制资源你怎么搞?还有响应本身就是 2 部分:body+header(cookie 也在 header 里面), cookie 也可也定向禁用嘛,并需要禁用掉所有 cookie. 你这个方法本质上就有问题。你应该提供更详细的需求场景。
    zanelee
        12
    zanelee  
       2023-06-02 16:05:37 +08:00
    这个东西就算页面和 iframe 是同一个 nginx 的 server ,可是请求是两个吧。要是必须在 nginx 上实现,感觉可以用 lua ,把页面请求的东西到时候先存到共享内存上,再在另一个 iframe 请求上返回的时候从共享内存上取。不知道可不不可行
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2733 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 12:32 · PVG 20:32 · LAX 04:32 · JFK 07:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.