繁体   English   中英

如何从servlet检查客户端是否启用了Java Script?

[英]How to check whether Java Script is enabled or not in client side from servlet?

实际上,我是通过隐藏字段概念和使用 cookie 来完成的。 但一个问题是这些方法。 如果用户或客户端手动将查询字符串添加到浏览器中的 url 和 cookie,那么我们的网站将接受启用 javascript。 那请告诉我其他方法。 这是我的 JSP 页面 -

<%@ page language="java"%>
       <html>
       <head>
       <title>Registration</title>
       <script type="text/javascript" src="../js/Validation.js"></script>  
       </head>
       <body>
       <form action="<%=request.getContextPath()%>/RegisterUser" method="post" onsubmit="return javascript:validate();">
       UserName : <input type="text" name="userName" id="userName" placeholder="Enter User Name">
       Email : <input type="text" name="email" id="email" placeholder="Enter Email Id">
       Password : <input type="password" name="password" id="password" placeholder="Enter Password">
       Retype-Password : <input type="password" name="repassword" id="repassword" placeholder="Enter Password Again">  
       <input type="submit" value="Register">
       <input type="hidden" name="jsStatus" id="jsStatus">
       </form>
       </body>
       </html>

我有 Java Script 作为

function validate() {
    var userName = document.getElementById("userName").value;
    var email = document.getElementById("email").value;
    var password = document.getElementById("password").value;
    var repassword = document.getElementById("repassword").value;
    var jsStatus = document.getElementById("jsStatus").value = "enabled";
    return true;
}

还有我的 servlet:

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/RegisterUser")
public class RegisterServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//      general settings
        PrintWriter pw = response.getWriter();
        response.setContentType("text/html");

//      Reading request parameters
        if( request.getParameter("jsStatus").equalsIgnoreCase("enabled") ){
            pw.println("<font>Java Script Is Enabled</font>");
        }
        else{
            pw.println("<font>Java Script Is Disabled</font>");
        }
    }
}

问题:现在,如果我点击注册按钮,它将顺利进行,如果启用,则显示 JavaScript 已启用,否则 JavaScript 将被禁用。 但是,如果我将通过将查询字符串扩展为 jsStatus=enabled 手动向该 servlet 发出请求,那么我的 servlet 也将显示 javascript 已启用,那么我在 servlet 中的逻辑也将执行。 如何解决这个问题?

如果您只想显示“JavaScript 已禁用”,您可以在 HTML 中执行以下操作:

<noscript>JavaScript is disabled</noscript>

如果在禁用 JavaScript 时您确实想在后端执行某些操作,请发表评论,我会更新答案。

看起来您正在尝试在客户端验证用户输入。 如果是这种情况,请不要这样做,因为客户端 JavaScript 可能会被修改,从而破坏您的验证代码。 用户输入应该始终在服务器端进行验证(客户端和服务器端都可以,客户端只会收到好的错误消息并减少对服务器的请求量)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM