uni-app targetSdkVersion cookie session 问题

发布于 1周前 作者 wuwangju 来自 Uni-App

uni-app targetSdkVersion cookie session 问题

开发环境 版本号 项目创建方式
HBuilderX 3.99 云端打包

操作步骤:

"minSdkVersion" : 29,  
"targetSdkVersion" : 33

预期结果:

后端通过 cookie 获取 session 内容

实际结果:

后端通过 cookie 获取 session 为 null

bug描述:

项目使用cookie保持状态
通过多次测试发现,targetSdkVersion 为 33 时后端获取的 cookie 为空,targetSdkVersion 为空时后端获取的 cookie 正常


1 回复

uni-app 开发中,targetSdkVersioncookiesession 是常见的与 Android 平台和 Web 开发相关的概念。以下是一些可能遇到的问题及其解决方案:

1. targetSdkVersion 问题

targetSdkVersion 是 Android 应用开发中的一个重要配置项,它指定了应用的目标 API 级别。较高的 targetSdkVersion 可以让应用利用最新的 Android 功能和优化,但也可能带来一些兼容性问题。

常见问题:

  • 权限问题:从 Android 6.0 (API 23) 开始,应用需要在运行时请求某些敏感权限。如果 targetSdkVersion 设置为 23 或更高,需要确保在代码中处理这些权限请求。
  • 行为变更:不同的 targetSdkVersion 可能会导致某些 API 的行为发生变化。例如,targetSdkVersion 28 及以上版本对后台服务的限制更加严格。

解决方案:

  • 权限处理:在 manifest.json 中声明所需的权限,并在代码中动态请求权限。
    {
      "permission": {
        "android.permission.CAMERA": {
          "description": "需要摄像头权限"
        }
      }
    }
  • 行为变更:阅读 Android 官方文档 了解不同 targetSdkVersion 的行为变更,并相应调整代码。

2. cookiesession 问题

在 Web 开发中,cookiesession 是用于维护用户会话状态的机制。uni-app 支持跨平台开发,因此在处理 cookiesession 时需要注意不同平台的差异。

常见问题:

  • 跨域问题:在 Web 平台,cookiesession 的跨域问题可能会导致会话状态丢失。
  • 平台差异:在移动端(如 Android 和 iOS),cookiesession 的处理方式可能与 Web 不同,特别是在使用 uni.request 进行网络请求时。

解决方案:

  • 跨域问题
    • 确保服务器设置了正确的 CORS 头。
    • 使用 withCredentials 选项来携带 cookie
      uni.request({
        url: 'https://example.com/api',
        method: 'GET',
        withCredentials: true,
        success: (res) => {
          console.log(res.data);
        }
      });
  • 平台差异
    • 在移动端,uni.request 默认会携带 cookie,但需要确保服务器支持 cookie
    • 如果需要手动管理 cookie,可以使用 uni.setStorageSyncuni.getStorageSync 来存储和读取 session 信息。

3. 综合问题

在某些情况下,targetSdkVersion 的配置可能会影响 cookiesession 的处理。例如,较高的 targetSdkVersion 可能会引入更严格的网络安全策略,导致 cookie 无法正常使用。

解决方案:

  • 网络安全配置:在 AndroidManifest.xml 中添加网络安全配置,允许不安全的网络请求。
    <application
        android:networkSecurityConfig="@xml/network_security_config"
        ... >
        ...
    </application>
    res/xml/network_security_config.xml 中配置:
    <network-security-config>
        <domain-config cleartextTrafficPermitted="true">
            <domain includeSubdomains="true">example.com</domain>
        </domain-config>
    </network-security-config>
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!