繁体   English   中英

NGINX 代理未设置 session cookie

[英]NGINX proxy not setting session cookie

我有一个 Rails 应用程序作为 API 和一个 Nuxt.js (Vue.js) 应用程序作为前端客户端。

我目前在当地为他们服务。 Rails 在端口3000上运行,Nuxt.js 在端口4000上运行

将我的/etc/hosts设置为域名: api.todos.test用于 Rails, todos.test用于 Nuxt.js

我的 NGINX 配置是:

upstream rails_api {
  server 127.0.0.1:3000;
}

server {
    listen       80;
    listen       [::]:80;
    server_name  ~^(?<subdomain>.+)\.todos.test;

    location ~ ^/rest/ {
        proxy_pass http://rails_api;
        proxy_set_header Real-IP       $remote_addr;
        proxy_set_header Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header NginX-Proxy   true;
        proxy_set_header Host          $subdomain.todos.test:3000;
        proxy_pass_header Set-Cookie;
        proxy_redirect off;
    }

    location / {
        proxy_pass http://todos.test:4000;
        proxy_set_header Real-IP $remote_addr;
        proxy_set_header Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header NginX-Proxy true;
        proxy_set_header Host        $host;
        proxy_redirect off;
    }
}

我可以访问两台服务器,所以 NGINX 正在处理代理。 我的 Rails API 返回带有Set-Cookie: _session_id=...的响应,但由于某种原因,这永远不会在 Chrome 中设置。

我在 NGINX 中做错了吗?

您是否向 Rails API 发送 XHR 请求?

出于安全原因,浏览器无法像从 ajax 请求中收到的那样访问第 3 方 cookies。

您可以手动获取/设置 cookie。 请参考这个问题。 如何从 AJAX 响应中获取 cookie?

似乎在使用 NGINX(或任何反向代理)时,从服务器发送 cookie 时需要在 cookie 中设置domain

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM