重定向和用户会话

SIP(会话发起协议) 1、简介 SIP(Session Initiation Protocol,会话初始协议)是由IETF(Internet Engineering Task Force,因特网工程任务组)制定的多媒体通信协议。它是一个应用层的信令控制协议。用于创建、修改和释放一个或多个参与者的会话。这些会话可以是Internet多媒体会议、IP电话或多媒体分发。会话的参与者可以通过组播(multicast)、网状单播(unicast)或两者的混合体进行通信。 SIP与负责语音质量的资源预留协议(... 阅读详情
出现的问题:


用户提交表单后,在刷新浏览器,会有上图的一个提醒

出现原因:

刷新浏览器会重新发送之前发送的最后一个请求,若该请求是一个包含表单数据的post请求,刷新浏览器后会再次提交表单

解决方法:

不讲web程序发送的POST请求最为浏览器发送的最后一个请求

需求的实现方式:

不适用常规的响应,使用重定向作为POST请求的响应

重定向

是一种特殊的响应方式,响应的内容是url,不是包含HTML代码的字符串,
浏览器收到这种响应后,会向重定向的url发起GET请求,显示页面的内容
现在最后一个请求是get请求

重定向实现中的问题:

程序处理post时,使用form.name.data获取用户输入,但是一旦这个请求结束,数据也丢失了,所以程序需要保存输入的名字,这样重定向请求后才能获取并使用这个名字,从而构建正真的响应

解决问题

将数据从存储在用户会话中,在请求之间记住数据

用户会话

是一种私有存储,存在每个连接到服务器的客户端中,是请求上下文中的变量,名为session,向python字典一样操作。
默认情况下session保存在客户端cookie中,使用设置的SECRET_KEY进行加密,如果篡改了cooki中的内容,签名就会失效,会话随之失效

# -*- coding:utf-8 -*-
from flask import Flask ,render_template,session,redirect,url_for
from flask.ext.script import Manager
from flask_bootstrap import Bootstrap
from flask.ext.moment import Moment
from flask.ext.wtf import Form
from wtforms import StringField,SubmitField
from wtforms.validators import Required


app = Flask(__name__)
app.config['SECRET_KEY']='hard to guess string'
manager = Manager(app)
bootstrap = Bootstrap(app)
moment = Moment(app)
form = Form()

class NameForm(Form):
    name = StringField('What is your name?',validators = [Required()])
    submit = SubmitField('Submit')

#主页
@app.route('/')
def index():
    name = None
    form = NameForm()
    if form.validate_on_submit():
        session['name'] = form.name.data
        return redirect(url_for('index'))
    return render_template('index.html',form=form,name=session.get('name'))

#主页(动态)
@app.route('/user/<name>')
def user(name):
    return render_template('user.html',name = name )

# 404 error
@app.errorhandler(404)
def page_not_found(e):
    #错误处理程序也会返回响应,包括返回与错误对应的数字状态码
    return render_template('404.html'),404
#500 error
@app.errorhandler(500)
def internal_server_error(e):
    return render_template('500.html'),500


if __name__ == '__main__':
    manager.run()
1. name变量

前一个版本,局部变量name用于存储用户在表单中输入的名字,
现在name变量存储在用户会话中,session[‘name’],所以在两次请求之间记住用户输入

2. redirect(url_for(”))

是一个辅助函数,用来生成HTTP重定向响应,
参数:
函数的第一个
重定向的UTL,此处使用url_for(‘inde’)生成url
使用url_for()的原因:
函数使用url映射生成url,保证url和定义的路由兼容,修改路由后依然可以使用

3. url_for()

函数的第一个 参数必须是 端点名,及路由的内部名字
默认情况下端点名是视图函数的名字
使用url_for()的原因:
函数使用url映射生成url,保证url和定义的路由兼容,修改路由后依然可以使用

4. session.get(‘name’)

直接从session会话中读取name参数的值,和普通字典一样,
get()获取字典中键对应的值,对于 不存在的键,get()返回None

源代码

PHP项目中的前端页面随意点击卡片后会重定向到首页或登录页 当PHP项目中的前端页面随意点击卡片后会重定向到首页或登录页时,这通常涉及到会话管理、权限控制以及重定向设置等方面的问题。解决这类问题需要深入理解这些概念,并在代码中正确实施相关的解决方案。 阅读详情

相关推荐

Windows11下QGIS 3.34.4安装Geo-SAM插件全流程(附RTX3060 CUDA12.0配置技巧)

本文详细介绍了在Windows 11系统中为QGIS 3.34.4安装和配置Geo-SAM插件的完整流程,特别针对RTX 3060显卡用户提供了CUDA 12.0与PyTorch环境的精准搭建方案。通过预编码与交互式分割两大核心步骤,该插件能显著提升遥感图像半自动标注的效率,降低硬件门槛,是地理信息处理领域融合AI技术的实用指南。

weixin_29089057的博客 296

【计算机网络】SIP会话时,使用重定向与不使用重定向功能的区别

对建立会话的过程进行了比较

和我一起学习 1485

SiamFC++笔记

SiamFC++: Towards Robust and Accurate Visual Tracking with Target Estimation Guidelines 文章根据这些思路:引入分类和目标状态估计分支(G1),无歧义的分类得分(G2),无先验知识的跟踪(G3)和评估质量得分(G4)来设计SiamFC ++。 SiamRPN ++和SiamFC ++的比较(红色部分代表得分高的区域): guide: G1 : 分类和状态估计任务的分离:分类任务将目标从干扰物和背景中分类出来,目标状态

木木JL的博客 9433

请求转发与响应重定向

请求转发与响应重定向 1.理解 请求转发(RequestDispatcher):服务器收到请求后,从一个资源跳转到另一个资源的操作。 响应重定向(Redirect):客户端给服务器发请求,然后服务器发送重定向的状态码给客户端,同时客户端向服务器重新请求指定的地址。 2.主要区别 请求转发: ​ (1)浏览器地址栏不发生改变,不会变为目标地址 ​ (2)请求转发是服务器的行为,整个转发的过程在服务器中完成 ​ (3)整个过程是一次请求,一次响应 ​ (4)各个资源共享Request域中的数据

Rex的博客 3014

对比学习(contrastive learning)

什么是自监督学习? 举个通俗的例子:即使不记得物体究竟是什么样子,我们也可以在野外识别物体。 我们通过记住高阶特征并忽略微观层面的细节来做到这一点。那么,现在的问题是,我们能否构建不关注像素级细节,只编码足以区分不同对象的高阶特征的表示学习算法?通过对比学习,研究人员正试图解决这个问题。 什么是对比学习? 对比学习是一种自监督学习方法,用于在没有标签的情况下,通过让模型学习哪些数据点相似或不同来学习数据集的一般特征。 让我们从一个简单的例子开始。想象一下,你是一个试图理解世界的新生婴儿。在家里,假设你有两只

cziun的博客 11万+

CAD文件转换避坑指南:Inventor导出STP时这些设置千万别忽略

本文深入解析了使用Autodesk Inventor导出STP文件时的关键设置与避坑指南。重点探讨了应用协议选择、样条曲线拟合精度对几何保真度的影响,以及装配体结构和元数据的保全策略,旨在帮助用户实现高质量、零误差的CAD数据交付,避免下游软件打开时出现特征丢失或曲面破碎等问题。

weixin_29214559的博客 518

Response设置响应数据功能介绍及重定向

Response设置响应数据功能介绍及Response重定向示例

m0_61961937的博客 3205

总结:知识图谱KG+大模型LLM

知识图谱KG+大模型LLM

安静的软件工程师 4210

请求转发和响应重定向

请求转发通常发生在服务器端,特别是当使用Web服务器和应用服务器的多层架构时。请求转发是指一个服务器接收到客户端的请求后,将这个请求转发给另一个服务器或同一个服务器上的另一个组件来处理。这通常用于负载均衡、安全性、或者将请求分发到专门的服务上。请求转发不会改变请求的URL,客户端通常不会意识到请求已经被转发。例如,在Web应用中,一个请求可能首先到达Web服务器,然后Web服务器根据配置将请求转发给后端的应用服务器进行处理。

2301_77193348的博客 1111

AI:Coze、Dify、n8n:三款低代码工具如何选?

Coze、Dify、n8n:三款低代码工具如何选?

Kant2048的博客 2806

buildozer

/home/chenyang/new_kivy/.buildozer/android/platform/build/build/other_builds/hostpython3/desktop/hostpython3/Lib

东方佑 16万+

响应重定向

响应重定向是实现页面跳转的优先方式之一,尤其在需要跳转到外部资源或客户端地址栏需要更新的情况下。它通过向客户端发送302响应码,告诉客户端去请求另一个URL。接下来,我们讨论为什么优先使用响应重定向,以及其与请求转发的区别。

gege_0606的博客 975

YOLOv11 改进 - 特征融合 | 替换 C3k2 涨点:GELAN 融合 CSP+ELAN 提精度

本文介绍了可编程梯度信息(PGI)和广义高效层聚合网络(GELAN)与 YOLOv11 的结合,以解决深度网络数据传输时的信息丢失问题。PGI 能为目标任务提供完整输入信息,计算目标函数以更新网络权重。GELAN 作为轻量级网络架构,由 SPPELAN、ELAN1、RepNCSPELAN4 等模块组成。我们将 GELAN 代码集成进 YOLOv11, 实验脚本显示,结合 GELAN 的 YOLOv11 在 MS COCO 数据集目标检测任务中或有良好表现。

魔改工程师的博客 1242

4.5 重定向和用户会话

前一版 hello.py 存在一个可用性问题。用户输入名字后提交表单,然后点击浏览器的刷新按钮,会看到一个莫名其妙的警告,要求在再次提交表单之前进行确认。之所以出现这种情况,是因为刷新页面时浏览器会重新发送之前发送过的请求。如果前一个请求是包含表单数据的 POST 请求,刷新页面后会再次提交表单。多数情况下,这并不是我们想执行的操作,因此浏览器才要求用户确认。 很多用户不理解浏览器发出的这个警告。...

weixin_30632089的博客 189

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Flask 重定向用户和会话

用户输入名字后提交表单,然后点击浏览器的刷新按钮,会看到一个莫名其妙的警告,要求在再次提交表单之前进行确认。之所以出现这种情况,是因为刷新页面时浏览器会重新发送之前已经发送过的最后一个请求。如果这个请求是一个包含表单数据的POST 请求,刷新页面后会再次提交表单。大多数情况下,这并不是理想的处理方式。很多用户都不理解浏览器发出的这个警告。 基于这个原因,最好别让Web 程序把 POST 请求作

ying847782627的博客 6268

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Flask从入门到精通之重定向和用户会话

  最新版的hello.py 存在一个可用性问题。用户输入名字后提交表单,然后点击浏览器的刷新按钮,会看到一个莫名其妙的警告,要求在再次提交表单之前进行确认。之所以出现这种情况,是因为刷新页面时浏览器会重新发送之前已经发送过的最后一个请求。如果这个请求是一个包含表单数据的POST 请求,刷新页面后会再次提交表单。大多数情况下,这并不是理想的处理方式。   很多用户都不理解浏览器发出的这个警告。基...

weixin_30826095的博客 174

web表单、重定向和用户会话、flask消息

web表单的视图函数和渲染 1、安装Flask-WTF pip install flask-wtf 示例: 导入相应模块 NameForm表单中有一个名为name的文本字段和一个名为submit的提交按钮 StringField类表示属性为type="text"的< input>函数 SubmitField类表示属性为type="submit"的< input>元素 字段...

yanyi3271的博客 252

php重定向页面位置,php - PHP重定向到基于页面版本的用户位置(IPAPI),并在会话中记住 - SO中文参考 - www.soinside.com...

bounty到期在7天内。该问题的答案有资格获得+ 100声望赏金。John the Painter希望引起更多关注对此问题。我正在尝试在head.inc文件中包含一些代码,该代码将检查该页面是否可用用户的位置语言显示,如果可以,它将重定向到该页面。显然,这对于UX而言不是很好,但是but,我的客户很热衷。我需要解决的唯一问题是,如果用户已经被重定向,那么不要在每个页面上都这样做...存储用户已被...

weixin_39883079的博客 124

JavaWeb学习(三)Request、重定向和转发、会话

Request request对象的一些方法(不显示web.xml的配置) import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletR...

weixin_44824745的博客 274

php 使用会话注销用户

使用会话完成注销步骤,数据库表中,userid为主键. 1.删除会话变量。 2.查看会话cookie是否存在,如果存在,则将其删除。 3.撤销会话。 4.将用户重定向到主页。这一步可选,不过对于网站的可用性会有帮助。 源代码:   // 如果用户登陆,注销会话   session_start();   if (isset($_SESSION['user_

iyinyue1的专栏 518

编写一个JSP页面,将用户名和密码存放到会话中(假设用户名为“孤独求败”,密码为“123456”),再重新定向到另一个JSP页面,将会话中存放的用户名和密码显示出来。

实战内容: 编写一个JSP页面,将用户名和密码存放到会话中(假设用户名为“孤独求败”,密码为“123456”),再重新定向到另一个JSP页面,将会话中存放的用户名和密码显示出来。(提示:使用response对象的sendRedirect()方法进行重定向) <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title<

m0_62404144的博客 3520

request的转发和重定向

请求转发:不会改变客户端浏览器的URL,适合于内部资源的访问,有利于保持会话状态。请求重定向:改变客户端浏览器的URL,通常用于告知用户新的位置,或者在执行某些操作后重定向到特定页面。

weixin_53691120的博客 1461

重定向 响应 会话 扩展

我要认认真真写啦 实验环境 Python 3.4 Flask 1.0.2 首先在环境中安装 flask1.0.2: sudo apt-get update sudo pip3 install flask==1.0.2 重定向和错误: 用redirect()函数重定向用户到其它地方。用abort()函数提前中断一个请求并带有一个错误代码。 from flask import Fl...

fangsi1994_的博客 226

【后端】会话管理-cookie&session

是 Web 开发中的一项关键技术,用于在用户与服务器之间的多次交互中维持状态。:建立连接,相互交流。eg:客户端和服务端交流客户端发起请求,服务端被动请求。

m0_75163045的博客 1859

java redirect 超时,OnActionExecuting造成无限重定向处理会话超时

I am trying to use OnActionExecuting in my BaseController to handle redirecting to LogOn screen if the User Session is timed out. However it is causing infinite redirects even before I get Logged in-...

weixin_35850219的博客 272
上一篇: 字典
下一篇: flash消息
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值