• tomcat 禁用不安全的http请求模式 .


      HTTP服务器至少应该实现GET和HEAD方法,其他方法都是可选的。当然,所有的方法支持的实现都应当符合下述的方法各自的语义定义。此外,除了上述方法,特定的HTTP服务器还能够扩展自定义的方法。

         http的访问中,一般常用的两个方法是:GET和POST。其实主要是针对DELETE等方法的禁用。有两种方式:

    一、修改应用中的web.xml:

        第一步:修改web-app协议

         Xml代码     

         <?xml version="1.0" encoding="UTF-8"?>     

         <web-app xmlns="http://java.sun.com/xml/ns/j2ee"     

                          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     

                          xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"     

                          version="2.4">  

      

        第二部:在应用程序的web.xml中添加如下的代码即可

        <security-constraint>     
        <web-resource-collection>     
           <url-pattern>/*</url-pattern>     
           <http-method>PUT</http-method>     
        <http-method>DELETE</http-method>     
        <http-method>HEAD</http-method>     
        <http-method>OPTIONS</http-method>     
        <http-method>TRACE</http-method>
        </web-resource-collection>     
           <auth-constraint>     
           </auth-constraint>     
        </security-constraint>     
        <login-config>     
            <auth-method>BASIC</auth-method>     
        </login-config>  

     

    二、修改tomcat中conf下的web.xml

         步骤同上。

     

    修改应用中的web.xml就针对本应用起作用,修改tomcat中的web.xml就可以对启动在该tomcat下所有的应用起作用。

     

     

    在未限制DELETE等方法前(即未做上述web.xml的内容的添加之前),测试http的DELETE方法的效果,方式如下:

    第一步:

    在Tomcat的web.xml 文件中配置org.apache.catalina.servlets.DefaultServlet的初始化参数

    Java代码  收藏代码
    1. <init-param>  
    2.     <param-name>readonly</param-name>  
    3.     <param-value>false</param-value>  
    4. </init-param>  

     

    readonly参数默认是true,即不允许delete和put操作,所以默认的通过XMLHttpRequest对象的put或者delete方法访问就会报告 http 403 forbidden 错误。

     

    第二步:

    从客户端通过 Ajax XMLHTTPRequest 发起 DELETE/PUT 请求,利用AJAX的方式调用DELETE,

    Java代码  收藏代码
    1. <script type="text/javascript">  
    2. function getXMLHTTPRequest(){  
    3.     if (XMLHttpRequest)    {  
    4.         return new XMLHttpRequest();  
    5.     } else {  
    6.         try{  
    7.             return new ActiveXObject('Msxml2.XMLHTTP');  
    8.         }catch(e){  
    9.             return new ActiveXObject('Microsoft.XMLHTTP');  
    10.         }  
    11.     }  
    12. }  
    13. var req = getXMLHTTPRequest();  
    14. req.open('DELETE','http://localhost:8080/yours_web/test.html',false);  
    15. req.send(null);  
    16. document.write(req.responseText);  
    17.   
    18. </script>  

     document.write(req.responseText);这一句既是调用了Ajax,也是将删除的test.html返回回来,如果删除成功,那么应该看到的是404的效果。

     

     

     

    另外对于web.xml配置参数的说明可参考:

    http://www.blogjava.net/baoyaer/articles/107428.html

     

    对于http深入了解可以参考:

    http://blog.csdn.net/lyq5655779/article/details/7515284

  • 相关阅读:
    WEB免费打印控件推荐
    json.net 反序列化
    PHP文件显示乱码
    ASP.NET服务开启后Session丢失的解决方法
    phpmyadmin 下载
    phpMyAdmin 错误 缺少 mysqli 扩展。请检查 PHP 配置
    解决IE6IE7下li上下间距
    获取IP地址方法
    Winform中DataGridView的DataGridViewCheckBoxColumn使用方法(选中与选不中)
    IIS配置PHP5.3配置完成后FastCGI Error14001 (0x800736b1)___解决方法
  • 原文地址:https://www.cnblogs.com/firstdream/p/5955493.html
Copyright © 2020-2023  润新知