Set-Cookies响应标头cookie不正确,无法立即在VPS上设置

问题描述 投票:0回答:1

我有一个Spring Boot应用程序,并且使用Apache Web Server在我的虚拟专用服务器上使用Vue创建了一些静态文件。

我有一个问题,就是未设置来自后端的cookie,更具体地说,它们没有显示在开发人员工具中。

在本地,一切正常,并且可以通过以下方式工作:

  1. 登陆页面登陆/登录
  2. 填写凭据并调用/ api / login(后端)
  3. 在响应标题中,我看到'Set-Cookie:XSRF-TOKEN = ed5479d8-75e0-4a48-affd-e02ded1c17e0;路径= /'和其他多个响应标头
  4. cookies显示在开发人员工具中
  5. 访问任意其他端点(例如/ create-pools)
  6. 请参阅XSRF-TOKEN cookie被发送回后端
  7. 看到作为标头的X-XSRF-TOKEN cookie也被发送到后端导致成功调用

在我的VPS上,流程应该相同,但是:

  1. 登陆页面登陆/登录
  2. 填写凭据并调用/ api / login(后端)
  3. 在响应标题中,我看到'Set-Cookie:XSRF-TOKEN = ed5479d8-75e0-4a48-affd-e02ded1c17e0;路径= /'和其他多个响应标头
  4. cookie不会显示在开发人员工具中
  5. 访问任意其他端点(例如/ create-pools)
  6. 请参阅XSRF-TOKEN cookie被发送回后端
  7. X-XSRF-TOKEN cookie没有发送回后端导致呼叫失败

因此,在我的VPS上,它不使用或设置cookie。

值得一提的是,在apache配置中,我有:SSLEngine开启SSLCertificateFile /etc/ssl/certs/SSL_certificate_www_test_com.crtSSLCertificateKeyFile /etc/ssl/certs/www.test.com.keySSLCACertificateFile /etc/ssl/certs/www.test.com.cer

    ServerAdmin webmaster@localhost
    DocumentRoot /home/bart/test/static/
    ServerName www.test.com
    ServerAlias test.com

    <Directory /home/bart/test/static>
            AllowOverride All

            <IfModule mod_rewrite.c>
            RewriteEngine On
            RewriteBase /
            RewriteRule ^index\.html$ - [L]
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteRule . index.html [L]
            </IfModule>
    </Directory>

    CustomLog ${APACHE_LOG_DIR}/access-test-com.log combined

    ProxyPreserveHost On
    ProxyRequests Off
    ProxyPass /api http://localhost:8082
    ProxyPassReverse /api http://localhost:8082

到目前为止我已经尝试过,但是没有用:

  • 查看XHR调用上的withCredentials属性(已添加了它,但默认情况下将其设置为true不会更改任何内容)
  • 手动读取XSRF-TOKEN cookie以查看其是否存在。它打印了undefined,但是奇怪的是它被发送到后端:Cookie:XSRF-TOKEN = ed5479d8-75e0-4a48-affd-e02ded1c17e0;在请求标头中(因此应该有一个cookie)
  • 将Spring中cookie的域名设置为test.com(这样就不会将cookie设置为localhost)
  • 将Spring中cookie的路径名设置为/

在proxypass中,我将/ api调用发送到后端。奇怪的是,一旦我手动导航到test.com/api,就会突然显示Cookie(带有路径/)。在那之后,如果我导航到另一个页面,则cookie突然出现。看来我首先必须手动访问/ api端点(这不是页面,而是后端的HTTP),然后显示Cookie。

如何为我解决未知问题?

问候,

Bart

spring-boot cookies apache2 vuex vps
1个回答
0
投票

最后,似乎可以通过更改我称呼后端的方式来解决。以前,我使用https://test.com/api进行了调用,但是我看到使用https://www.test.com/api的请求正确设置了cookie。而https://test.com/api调用没有。因此,我通过添加www更改了调用后端的方式。

我不知道为什么它会这样工作,但似乎已经解决了问题。如果有人对原因有任何想法,请随时添加评论。现在,我将其作为答案。

谢谢大家考虑我的问题。

Bart

© www.soinside.com 2019 - 2024. All rights reserved.