前后端分离页面跳转获取seesion
时间: 2023-06-27 22:07:31 浏览: 67
前后端分离的应用中,前端和后端是独立的两个系统,前端通过 AJAX 或 Fetch 等技术向后端发送请求获取数据或提交数据,后端则负责处理这些请求并返回数据。因此,在前后端分离的应用中,前端是无法直接获取后端的 session 的。
如果需要在前端获取后端的 session,可以在后端接口中返回 session_id,然后通过前端的 AJAX 或 Fetch 请求将 session_id 发送给后端,后端再根据 session_id 获取对应的 session 数据。具体操作可以参考以下代码:
后端接口:
```python
from flask import session, jsonify
@app.route('/api/get_session_id', methods=['GET'])
def get_session_id():
session['username'] = 'test'
return jsonify({'session_id': session.sid}), 200
```
前端代码:
```javascript
fetch('/api/get_session_id', {
method: 'GET',
credentials: 'include'
}).then(response => {
if (response.status === 200) {
return response.json()
} else {
throw new Error('获取 session_id 失败')
}
}).then(data => {
// 将 session_id 存储在本地
localStorage.setItem('session_id', data.session_id)
}).catch(error => {
console.error(error)
})
```
然后,前端可以在后续的请求中将 session_id 发送给后端,后端再根据 session_id 获取对应的 session 数据。具体操作可以参考以下代码:
后端接口:
```python
from flask import session, request, jsonify
@app.route('/api/get_session_data', methods=['GET'])
def get_session_data():
session_id = request.cookies.get('session_id')
# 根据 session_id 获取 session 数据
username = session.get('username')
return jsonify({'username': username}), 200
```
前端代码:
```javascript
fetch('/api/get_session_data', {
method: 'GET',
credentials: 'include'
}).then(response => {
if (response.status === 200) {
return response.json()
} else {
throw new Error('获取 session 数据失败')
}
}).then(data => {
console.log(data.username)
}).catch(error => {
console.error(error)
})
```