我有一个Spring Boot应用程序,并且使用Apache Web Server在我的虚拟专用服务器上使用Vue创建了一些静态文件。
我有一个问题,就是未设置来自后端的cookie,更具体地说,它们没有显示在开发人员工具中。
在本地,一切正常,并且可以通过以下方式工作:
在我的VPS上,流程应该相同,但是:
因此,在我的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
到目前为止我已经尝试过,但是没有用:
withCredentials
属性(已添加了它,但默认情况下将其设置为true不会更改任何内容)undefined
,但是奇怪的是它被发送到后端:Cookie:XSRF-TOKEN = ed5479d8-75e0-4a48-affd-e02ded1c17e0;在请求标头中(因此应该有一个cookie)在proxypass中,我将/ api调用发送到后端。奇怪的是,一旦我手动导航到test.com/api,就会突然显示Cookie(带有路径/)。在那之后,如果我导航到另一个页面,则cookie突然出现。看来我首先必须手动访问/ api端点(这不是页面,而是后端的HTTP),然后显示Cookie。
如何为我解决未知问题?
问候,
Bart
最后,似乎可以通过更改我称呼后端的方式来解决。以前,我使用https://test.com/api进行了调用,但是我看到使用https://www.test.com/api的请求正确设置了cookie。而https://test.com/api调用没有。因此,我通过添加www更改了调用后端的方式。
我不知道为什么它会这样工作,但似乎已经解决了问题。如果有人对原因有任何想法,请随时添加评论。现在,我将其作为答案。
谢谢大家考虑我的问题。
Bart