处理返回excel的Post请求

处理返回excel的Post请求,post,nginx,reverse-proxy,proxypass,Post,Nginx,Reverse Proxy,Proxypass,我正在使用ngnix代理将请求传递给应用服务器。我正在使用以下配置 server { listen 80; server_name localhost; access_log /var/log/nginx/localhost.access.log; location / { proxy_pass http://localhost:9000; proxy_http_version 1.1;

我正在使用ngnix代理将请求传递给应用服务器。我正在使用以下配置

server {
  listen       80;
  server_name  localhost;
  access_log  /var/log/nginx/localhost.access.log;
  location / {
             proxy_pass http://localhost:9000;
             proxy_http_version 1.1;
             proxy_set_header Upgrade $http_upgrade;
             proxy_set_header Connection 'upgrade';
             proxy_set_header Host $host;
             proxy_cache_bypass $http_upgrade;
            }
  location /names.json {
    proxy_pass      http://appserver.com:3000;
  }
  location /names/ {
    proxy_pass      http://appserver.com:3000;
  }
}
现在我有一个POST请求,格式为:
http://uiserver.com/hosts/export.xlsx

我正在传递POST的参数,并从我的web服务器发出POST请求。现在,当应用程序服务器以excel的形式返回数据时,浏览器没有以文件的形式加载数据,而是在响应中看到加密数据

是否有我遗漏的东西,我应该如何修复?或者是来自应用服务器端的东西。请让我知道


谢谢

浏览器将使用
内容类型
标题了解内容是什么(以及如何处理)。 您的应用程序应发送
内容类型:application/
,有关正确的类型,请参阅


如果没有它(或使用不正确的),浏览器可能会尝试将内容显示为文本。

如果您将请求直接发布到
http://appserver.com:3000
,您有问题吗?我还需要传递一些参数。因此,当我尝试在Firefox上使用RestClient插件并传递参数时,我也遇到了同样的问题。因此,除了设置内容类型,我不需要在nginx上对代理传递做任何事情。我尝试了设置内容类型。但是当我尝试使用RestClient插件发布文章时,我仍然没有得到文档。应用服务器是否也设置了内容并发送了文档?Nginx应该在发送时传递此标题,您不必在此处更改任何内容。
内容类型
标题由服务器在响应中设置。使用RestClient,您应该查看是否有这个头以及它是否有正确的值。如果不是,那就是你的问题。我在回复中看到的内容类型是“application/vnd.openxmlformats officedocument.spreadsheetml.sheet”。但仍然无法获取文件。我正在使用RestClient测试API。我还缺少什么吗?我认为RestClient只处理文本响应,向您显示随机的“文本”。如果您有此标题,则问题可能在浏览器端。你怎么称呼这份文件?您是否直接在其url上发送用户?你打ajax电话吗?如果是这样的话,你能在你的问题中添加执行调用的代码吗?