生也有涯,知也无涯。这篇文章主要讲述在H5 App中实现自定义Token的注意事项相关的知识,希望能为你提供帮助。
我们在写Hybird App时,一般都是利用Token来代替Cookie实现用户会话。
如果是发布成app的话,由于app自带了webview环境,运行时与后端服务器的关系相当于Server 2 Server,因此一般不涉及跨域的问题。
但如果发布成H5 App的话,因为是直接在终端的浏览器里运行,就会涉及到CORS(跨域资源共享)的处理问题。
关于CORS的解决办法,主要就是三个方面:
1、简单请求:不涉及Header的附加信息,直接添加以下头部响应即可:
response.setHeader("Access-Control-Allow-Origin", "*"); //允许的请求域名 response.setHeader("Access-Control-Allow-Methods", "POST, GET"); //允许的请求方式 response.setHeader("Access-Control-Allow-Headers", "*"); //允许的自定义头 response.setHeader("Access-Control-Max-Age", "3600"); //信任时间
2、复杂请求:如果请求或者响应的Header中包含需要处理的额外信息时,则每次实际请求之前都会发送一次OPTIONS类型的预请求,如果预请求得到正确的回应,才会发送正式请求,因此,需要服务端除了要添加上面的响应以外,还要对预请求进行处理:
String method = getRequest().getMethod().toUpperCase(); if(method == "OPTIONS"){ response.setStatus(HttpStatus.SC_NO_CONTENT); }
3、发送Token:也是最重要的一点,如果需要通过Header向前端返回Token,那么在发送响应之前,还需要额外添加一行许可:
response.setHeader("Access-Control-Expose-Headers", "MyAppTokenName"); response.setHeader("MyAppTokenName", TokenUtil.getToken());
其中红色的那行代码非常重要,否则前端将无法接收到response回来的Token串。
【在H5 App中实现自定义Token的注意事项】
推荐阅读
- 如何抓取Android系统APP运行测试日志
- Android7.1 移植 GPS Ublox HAL
- android中通过kotlin使用WebView
- Android开发 RecyclerView开发记录
- Flutter的AppBar的多种使用方式
- adb安卓调试桥测试应用
- Android base64加密中文乱码问题解决记录
- 使用Salesforce AppExchange在企业中快速获胜
- Magento简介(在顶级电子商务生态系统中导航)