跨域请求中Cookie未发送?排查HTMX与标准请求的差异
环境配置
- www.localhost.lan 指向 127.0.0.1
- app.localhost.lan 指向 127.0.0.1
端口443运行着使用mkcert证书的HAProxy,核心代理规则如下:
use_backend www if { hdr(host) -i www.localhost.lan } use_backend app if { hdr(host) -i app.localhost.lan }
用户登录时,通过以下Rust代码生成Cookie:
let cookie = Cookie::build(("vs-jwt", &s)) .domain(".localhost.lan") .secure(true) .same_site(SameSite::None) .http_only(true) .path("/") .max_age(Duration::WEEK) .build();
问题现象
访问www.localhost.lan/app时:
- GET www.localhost.lan/app 请求会正常携带Cookie
- HTMX发起的GET app.localhost.lan/view/app 请求未携带Cookie
尝试调整Cookie配置后问题依旧,怀疑和JS发起的请求(此处为HTMX)有关?
触发请求的HTMX代码:
<section class="bg-white dark:bg-gray-900"> <div id="app"></div> <div hx-get="https://app.localhost.lan/view/app" hx-trigger="load" hx-target="#app"> <img alt="Result loading..." class="htmx-indicator" width="150" src="/img/bars.svg" /> </div> </section>
经排查,标准XMLHttpRequest请求可正常携带Cookie:
const xhr = new XMLHttpRequest(); xhr.open("GET", "https://app.localhost.lan/view/app", true); xhr.withCredentials = true; xhr.send(null);
请问我遗漏了什么配置?
内容的提问来源于stack exchange,提问作者Istvan
相关产品推荐
相关产品推荐

