您的位置:首页 > 汽车 > 新车 > 手机网站怎么开发_网站seo诊断评分45_在线网页制作网站_网站推广优化设计方案

手机网站怎么开发_网站seo诊断评分45_在线网页制作网站_网站推广优化设计方案

2024/11/20 15:38:11 来源:https://blog.csdn.net/Enya61/article/details/143303685  浏览:    关键词:手机网站怎么开发_网站seo诊断评分45_在线网页制作网站_网站推广优化设计方案
手机网站怎么开发_网站seo诊断评分45_在线网页制作网站_网站推广优化设计方案

问题

目前账号已经登录,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_id=your_session_value; SameSite=None; Secure

2. 使用带认证的 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 中的已登录信息,尝试以下方法:

  • Tokensession_id 通过 URL 参数传递给 skymap.html,并在 HTML 文件中读取:

    <script>const urlParams = new URLSearchParams(window.location.search);const token = urlParams.get('token');// 在 fetch 请求中使用 token
    </script>
    

4. Nginx 配置或 UniApp 代理设置

确保 Nginx 或其他代理服务器上配置正确,尤其是在需要传递 Cookie 或 Header 时,避免跨域问题导致认证失效。

最终经过考虑,我选择修改后端来实现通过后端修改Spring Cloud Gateway 配置love.security 配置指定了一些公开访问的 URL(permit-all-urls)和忽略权限的 URL(ignore-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不涉及重要隐私数据,故可以这样来实现)。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com