精华内容
下载资源
问答
  • 我在提交表单时收到了404错误提示。我试图通过该表格上传并提交.png,按理来说服务器(Python,Flask)应该能够使用它才对......有人知道我的问题出在哪里吗? <p>AJAX: <pre><code><script> document....
  • django在提交表单时403错误解决方法

    千次阅读 2012-10-23 11:44:49
    第一次用Django做项目,遇到了很多问题。 今天遇到的问题是Django在处理post请求多次出现403错误,我弄了好久才把问题解决。 我先描述一下问题出现的环境:我用...我找不出什么原因,只好新建了一个表单来测试
    第一次用Django做项目,遇到了很多问题。
    

    今天遇到的问题是Django在处理post请求时多次出现403错误,我弄了好久才把问题解决。

    我先描述一下问题出现的环境:我用Django写了一个web服务端,姑且称它为API吧。我在实际测试中发现,通过get方式可以从API中获得数据,但是post方式却无法获取数据,客户端显示服务器端出现403错误。

    我找不出什么原因,只好新建了一个表单来测试post请求,我发现通过表单发送post请求时,页面显示403错误:Forbidden CSRF verification failed. Request aborted.

    我在网上查了一下,大多数人的解决方式是:在settings.py里面的MIDDLEWARE_CLASSES中加入django.middleware.csrf.CsrfResponseMiddleware’,

    我测试了一下,加入上面的代码之后,表单提交确实没有问题。

    但是我程序中调用API时,API仍然会返回403错误。我查了一下API中的代码,确定不是我写的代码的问题。然后我就疑惑了。

    不过我有一种感觉,那就是settings.py里面的MIDDLEWARE_CLASSES的配置有问题。我又在网上查了一下,有人说把‘django.middleware.csrf.CsrfViewMiddleware’,去掉可以解决post方式出现的403错误。

    我试了一下,还真可以。

    现在总结一下解决方法:

    1. 在settings.py里面的MIDDLEWARE_CLASSES中加入“‘django.middleware.csrf.CsrfResponseMiddleware’,”;

    2. 在settings.py里面的MIDDLEWARE_CLASSES中去掉“‘django.middleware.csrf.CsrfViewMiddleware’,”。

    如果是解决表单提交时的出现的403错误“Forbidden CSRF verification failed. Request aborted.”,上面的两种方式都可以解决,如果在其他程序里面单独通过get方式请求数据,那就只能用第二种方式解决。

    另外我想补充的就是:第二种方式不需要以第一种方式为前提,也就是在去掉“’django.middleware.csrf.CsrfViewMiddleware’,”后可以不用加入“’django.middleware.csrf.CsrfResponseMiddleware’,”
    展开全文
  • 若刷新表单页面, 再提交表单不算重复提交. 在不刷新表单页面的前提下: 多次点击提交按钮 已经提交成功, 按 "回退" 之后, 再点击 "提交按钮". 在控制器响应页面的形式转发情况下,若已经提交成功, 然后点击 "刷新...
    1. 什么是表单重复提交
      • 表单的重复提交:
      • 若刷新表单页面, 再提交表单不算重复提交.
      • 在不刷新表单页面的前提下:
        • 多次点击提交按钮
        • 已经提交成功, 按 "回退" 之后, 再点击 "提交按钮".
        • 在控制器响应页面的形式为转发情况下,若已经提交成功, 然后点击 "刷新(F5)“
      • 重复提交的缺点:
        • 加重了服务器的负担
        • 可能导致错误操作.
      • token(令牌)
        1. 用户在访问页面时,我们要生成一个随机的token值
        2. 将该值放入到session域中,同时放在表单隐藏域中
        3. 用户提交请求时,隐藏域中token将会一起提交
        4. 服务器在处理请求时先要检查请求参数中的token和session中的token是否一致
          • 如果一致,则处理请求
          • 否则,返回错误页面
        5. 注意,token使用过一次以后必须要从session域中移除
    2. Struts2 解决表单重复提交
    • afac410dgw1fafv0gdj8dj20k70b4q4v.jpg
    1. 标记管理
      • Struts 提供的 token 标签可以用来生成一个独一无二的标记. 这个标签必须嵌套在 form 标签的内部使用, 它将在表单里插入一个隐藏字段并把标记值(隐藏域的字段的值)保存在HttpSession 对象里.
      • Token 标签必须与 Token 或 TokenSession 拦截器配合使用, 这两个拦截器都能对标记进行处理.
      • Token 拦截器在遇到重复提交情况时, 会返回 invalid.token 结果并加上一个 Action 错误. 这种错误默认的消息是: The form has already been processed or no token was supplied, please try again.
      • TokenSession 拦截器采取的做法只是阻断后续的提交, 用户将看到同样的响应,但实际上并没有重复提交
    2. Struts2 解决表单的重复提交问题:
      • 在 s:form 中添加 s:token 子标签
        • 生成一个隐藏域
        • 在 session 添加一个属性值
        • 隐藏域的值和 session 的属性值是一致的.
      • 使用 Token 或 TokenSession 拦截器.
        • 这两个拦截器均不在默认的拦截器栈中, 所以需要手工配置一下
        • 若使用 Token 拦截器, 则需要配置一个 token.valid 的 result
        • 若使用 TokenSession 拦截器, 则不需要配置任何其它的 result
      • Token VS TokenSession
        • 都是解决表单重复提交问题的
        • 使用 token 拦截器会转到 token.valid 这个 result
        • 使用 tokenSession 拦截器则还会响应那个目标页面, 但不会执行 tokenSession 的后续拦截器. 就像什么都没发生过一样!
      • 可以使用 s:actionerror 标签来显示重复提交的错误消息.
        • 该错误消息可以在国际化资源文件中覆盖. 该消息可以在 struts-messages.properties 文件中找到struts.messages.invalid.token=The form has already been processed or no token was supplied, please try again.
    <s:form action="testForm" >
        <!-- 增加token 标签,隐藏属性 -->
        <s:token></s:token>
    
        <s:textfield name="username" label="用户名"></s:textfield>
        <s:submit value="提交"></s:submit>
    </s:form>
    <!-- token 拦截器 -->
    <action name="testForm" class="org.pan.action.TestFormAction" method="testForm">
        <!-- 使用token 拦截器,进行表单重复提交校验 -->
        <interceptor-ref name="token"></interceptor-ref>
        <!-- 不要忘记默认的拦截器栈-->
        <interceptor-ref name="defaultStack"></interceptor-ref>
    
        <!-- 如果是使用的是 token 拦截器,校验失败后会转到 invalid.token -->
        <result name="invalid.token">/WEB-INF/views/token-error.jsp</result>
        <result name="success">/WEB-INF/views/success.jsp</result>
    </action>
    <action name="testForm" class="org.pan.action.TestFormAction" method="testForm">
       <!-- 使用tokenSession 拦截器,进行表单重复提交校验 -->
        <interceptor-ref name="tokenSession"></interceptor-ref>
        <!-- 不要忘记默认的拦截器栈-->
        <interceptor-ref name="defaultStack"></interceptor-ref>
    
        <!-- 如果是使用的是 tokenSession 拦截器,校验后会回到返回的 action方法 result。就像什么都没发生过 -->
        <result name="success">/WEB-INF/views/success.jsp</result>
    </action>

    转载于:https://www.cnblogs.com/MPPC/p/6134207.html

    展开全文
  • 常见于注册登录 ,如果某项信息格式输入错误表单页面及时给出错误提示,这些错误没有提交服务器前,由客户端提前进行验证,用户得到了即时的交互,同时减轻了网站服务器端的压力,这些就是javascript的常用...

    为什么学习 JavaScript ?
    1.客户端表单验证,减轻服务器压力
    常见于注册登录时 ,如果某项信息格式输入错误,表单页面及时给出错误提示,这些错误没有提交到服务器前,由客户端提前进行验证,用户得到了即时的交互,同时减轻了网站服务器端的压力,这些就是javascript的常用场合

    2.制作页面动态特效
    创建动态页面特效,从而高效控制页面的内容,表单验证效果,网页轮播效果,在有限的空间里展现更多的内容,从而增加客户端的体验,使我们的网站更加有动感,吸引更多的浏览者。

    JavaScript是一种描述性语言,一种基于对象和事件驱动的,并具有安全性能的脚本语言,与HTML一起,在一个web页面中链接多个对象,与web客户实现交互,无论在客户端还是在服务器端,JavaScript都要下载到浏览器的客户端执行,减轻服务器的负担,总结就是:

    • 向HTML页面中添加交互行为
    • 一种脚本语言,语法和java类似
    • 一般用来编写客户端脚本
    • 一种解释性语言,边执行边解释

    JavaScript由三个部分组成:

    • 1.ECMAScript
    • 2.浏览器对象模型(BOM)
    • 3.文档对象模型(DOM)

    JavaScript执行过程:

    • 浏览器向服务器发送请求:用户在浏览器的地址栏中输入要访问的页面(页面包含JavaScript脚本程序)
    • 数据处理:服务器端将某个包含JavaScript脚本的页面进行处理
    • 发送响应:服务器端将含有JavaScript脚本的HTML文件处理页面发送到浏览器客户端,由浏览器逐条解析HTML标签和JavaScript脚本,并将页面效果呈现给用户

    使用客户端脚本有两个好处:

    • 含脚本的页面只要下载一次就好,可以减少不必要的网络通信
    • 脚本程序由浏览器客户端执行,减轻服务器端的压力
    展开全文
  • 我已经用数据库制作了一个简单的php cms表单,但是当我想用一些虚拟数据提交表单时,它不能正常工作!我不知道为什么会发生&我还添加了mysqli_error()来获取我所面临的错误类型,但是我只有这样:您的SQL语法有误;...

    我已经用数据库制作了一个简单的php cms表单,但是当我想用一些虚拟数据提交表单时,它不能正常工作!我不知道为什么会发生&我还添加了mysqli_error()来获取我所面临的错误类型,但是我只有这样:

    您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册以在第2行的“,”,”)’附近使用正确的语法

    if (isset($_POST['submit'])){

    $post_title = $_POST['title'];

    $post_date = date('d-m-y');

    $post_author = $_POST['author'];

    $post_keywords = $_POST['keywords'];

    $post_content = $_POST['content'];

    $post_image = $_FILES['image']['name'];

    $image_tmp = $_FILES['image']['tmp_name'];

    if ($post_title=='' or $post_keywords='' or $post_content='' or $post_author=''){

    echo '';

    }else{

    move_uploaded_file($image_tmp,"post_images/$post_image");

    $insert_query = "INSERT INTO posts

    (post_title,post_date,post_author,post_image,post_keywords,post_content) VALUES ('$post_title','$post_date','$post_author',$post_image','$post_keywords','$post_content')";

    $insert_post = mysqli_query($con,$insert_query);

    if ($insert_post){

    echo '

    Post has been added successfully.

    ';

    }else{

    echo mysqli_error($con);

    }

    }

    }

    ?>

    Insert Post Title
    Insert Post Author
    Insert Post Keywords
    Insert Post Image
    Insert Post Content

    如果您分享此问题的解决方案,这对我非常有帮助…谢谢!

    解决方法:

    您在$post_image之前缺少引号:

    ,$post_image'

    应该:

    ,'$post_image'

    因此,完整的SQL语句变为:

    $insert_query = "INSERT INTO posts

    (post_title, post_date, post_author, post_image, post_keywords, post_content)

    VALUES ('$post_title', '$post_date', '$post_author', '$post_image',

    '$post_keywords', '$post_content')";

    请注意,如果您在以下情况下正在做作业:

    if ($post_title=='' or $post_keywords='' or $post_content='' or $post_author=''){

    您应该使用double ==而不是=.

    标签:php,mysql,forms

    来源: https://codeday.me/bug/20191013/1911149.html

    展开全文
  • 01网站404错误页面对SEO引擎优化的影响什么叫404错误页面:得知浏览者其所中请的网页页面找不到或超链接不正确,直接帮助用户采用网站其它网页页面而不是结束进程...当web 云服务器接收相近表单提交时,会加载1个...
  • ViewState彻底研究

    2010-12-20 17:15:00
    1.为什么需要产生viewstate概念? 2.使用demo了解asp.net page的life cycle,进而了解viewstate工作原理?...设想一下,您提交了一张带有大量信息的表单,而服务器返回了一个错误。您将不得不返回表单,然后更正其...
  • 第一章 使用jQuery快速高效制作网页交互特效 1.1为什么学习JavaScript ...这些错误提交服务器前,由客户端提前进行验证,称为客户端表单验证。以QQ登录为例,如图1.1所示,没有输入QQ号码直接登录就提示
  • 最近在开发中碰到了几个提交表单后找不到anction类的问题,这问题还比较奇葩,平常正常访问的类,在访问一些方法突然报unknow class,而且该类下其他本来能正常访问的类方法也不能访问(报同样的错误,就好象访问...
  • 哑光声望 ... 问:我正在尝试在网站上建立联盟,但是当我单击“提交”按钮,它什么也没做,并且没有给出错误消息。 答:这是一个已知问题,避免这种情况,请确保您拥有偶数个部门和子联盟,并且
  • 精通AngularJS part1

    2016-10-10 15:32:02
    直接向服务器提交表单161 处理表单提交事件161 使用ngSubmit处理表单提交162 使用ngClick处理表单提交162 59重置用户信息表单162 510摘要164 第6章导航165 61单页Web应用的URL166 HTML5之前的HashbangURL166...
  • 今日校园每日自动提交疫情上报py脚本,支持邮件推送提交结果消息,支持几乎所有学校(今日校园) 使用了此脚本或者参考了这个项目,请自觉给项目点个star 本项目仅供学习交流使用,如作他用所承受的任何直接、间接...
  • 12.2 为什么使用PHP的XML扩展,而非PHP字符串函数 12.2.1 解决方案 12.2.2 讨论 12.3 如何解析RSS频道 12.3.1 解决方案 12.3.2 讨论 12.4 如何生成RSS频道 12.4.1 解决方案 12.4.2 讨论 12.5 如何在XML中搜索一个...
  • (3)、群组等级组管理,主要用途是群组升级根据组的升级金币条件进行升级,相应给予该群会员数及空间。 除群组等级之外,都可以点击每个等级之后的[编辑]链接进入权限编辑,里面有大约150项权限设置,详细...
  • 事务处理原理 第2版

    热门讨论 2012-12-30 10:49:38
    1.7.5 为什么要设计tp系统 1.8 tp系统配置 1.9 小结 第2章 事务处理抽象 2.1 介绍 2.2 事务 2.2.1 集合事务括号 2.2.2 事务标识符 2.2.3 链式事务 2.2.4 面向对象编程中的事务括号 2.2.5 嵌套事务 2.2.6 异常处理 ...
  • 16.17 根据状态为表单设置样式 346 第17章 视频、音频和其他多媒体 349 17.1 第三方插件和步入原生 349 17.2 视频文件格式 350 17.3 在网页中添加单个视频 351 17.4 视频添加控件和自动播放 352 ...
  • Spring面试题

    2015-05-06 07:19:39
    用户提交表单时,一个配置好的ActionForm对象被创建,并被填入表单相应的数据,ActionServler根据Struts-config.xml文件配置好的设置决定是否需要表单验证,如果需要就调用ActionForm的 Validate()验证后选择将...
  • 使用DiskCacheStore()默认缓存到context.getCacheDir()目录,使用DiskCacheStore(path)指定缓存目录path,不过要注意SD卡的读写权限和运行权限:AndPermission。 配置缓存位置SD卡示例: ...
  • php网络开发完全手册

    热门讨论 2009-03-02 13:17:26
    9.1.5 运行错误 138 9.2 PHP程序调试策略 138 9.2.1 PHP的错误级别 138 9.2.2 打开PHP的错误报告 140 9.2.3 使用print进行程序调试 140 9.3 使用PHPEclipse进行PHP程序调试 141 9.3.1 使用Eclipse编写PHP程序的 ...
  • 当填写完表单时,将光标定位在单行文本框中敲击回车键,可代替点击提交表单按钮的功能。此功能可方便用户快速提交表单。 3、复选框与单选框: 在选中复选框或单选框时,为了增加鼠标点选的方便性,点击其后面的...
  • 23.4.1为什么同源? 185 23.4.2 Spring WebSocket允许的来源 186 23.4.3添加CSRF到Stomp头 186 23.4.4在WebSockets中禁用CSRF 187 23.5使用SockJS 187 23.5.1 SockJS和框架选项 187 23.5.2轻松放松CSRF 188 第五部分...
  • 什么是 Siebel Communication Server? 17 将 Communication Server 用于其它 Siebel 模块 18 Communication Server 和 Siebel CTI 18 Communication Server 和 Siebel Email Response 18 Communication Server 和 ...

空空如也

空空如也

1 2 3
收藏数 54
精华内容 21
关键字:

为什么提交表单时服务器错误