网站横幅js代码,湖南网站建设 尖端磐石网络,怎么整理网站,新软件如何推广问题#xff1a;
目前账号已经登录#xff0c;uniapp的其他端口均可以访问到数据#xff0c;唯独skymap.html中的8100会提示未登录。#xff08;8100是后端网关gateway端口#xff09;
分析#xff1a;
在 skymap.html 中遇到未登录提示的问题#xff0c;通常是由于该…问题
目前账号已经登录uniapp的其他端口均可以访问到数据唯独skymap.html中的8100会提示未登录。8100是后端网关gateway端口
分析
在 skymap.html 中遇到未登录提示的问题通常是由于该文件的请求未带上登录状态的认证信息。一般来说认证信息如 Cookie 或 Token默认会由前端框架如 UniApp管理但如果是独立的 HTML 文件浏览器的安全策略可能阻止了此文件自动带上认证信息。以下是一些具体的排查和解决方法
1. 确认 Cookie 的 SameSite 设置
检查服务端的 Set-Cookie 响应头是否将 SameSite 设置为 None并启用了 Secure在 HTTPS 下以确保浏览器在跨域请求时能够发送 Cookie
Set-Cookie: session_idyour_session_value; SameSiteNone; Secure2. 使用带认证的 Fetch 请求
如果使用 Token 认证确保在 fetch 请求中手动添加 Authorization 头部。例如
const token your-token-here; // 从 UniApp 中提取已登录的 token
const response await fetch(http://localhost:8100/api/v1/iot/thing/aggregated-geo, {method: POST,headers: {Authorization: Bearer ${token},Content-Type: application/json},body: JSON.stringify(requestData)
});3. 通过 HTML 文件加载认证信息
如果 skymap.html 无法直接访问 UniApp 中的已登录信息尝试以下方法 将 Token 或 session_id 通过 URL 参数传递给 skymap.html并在 HTML 文件中读取 scriptconst urlParams new URLSearchParams(window.location.search);const token urlParams.get(token);// 在 fetch 请求中使用 token
/script4. Nginx 配置或 UniApp 代理设置
确保 Nginx 或其他代理服务器上配置正确尤其是在需要传递 Cookie 或 Header 时避免跨域问题导致认证失效。 最终经过考虑我选择修改后端来实现通过后端修改Spring Cloud Gateway 配置love.security 配置指定了一些公开访问的 URLpermit-all-urls和忽略权限的 URLignore-permission-urls。
love:security:permit-all-urls:- /api/v1/love/thing/aggregated-geoignore-permission-urls:- /api/v1/love/thing/aggregated-geo
直接将skymap.html 需要访问的后端api设置成公开访问并忽略权限。注意这个需要根据实际场景考虑因为我这个api不涉及重要隐私数据故可以这样来实现。