Ben PUT, DELETE, vb izin vermemek için benim uygulama web.xml aşağıdaki koydu:
<security-constraint>
<web-resource-collection>
<web-resource-name>restricted methods</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>DELETE</http-method>
<http-method>PUT</http-method>
<http-method>SEARCH</http-method>
<http-method>COPY</http-method>
<http-method>MOVE</http-method>
<http-method>PROPFIND</http-method>
<http-method>PROPPATCH</http-method>
<http-method>MKCOL</http-method>
<http-method>LOCK</http-method>
<http-method>UNLOCK</http-method>
<http-method>delete</http-method>
<http-method>put</http-method>
<http-method>search</http-method>
<http-method>copy</http-method>
<http-method>move</http-method>
<http-method>propfind</http-method>
<http-method>proppatch</http-method>
<http-method>mkcol</http-method>
<http-method>lock</http-method>
<http-method>unlock</http-method>
</web-resource-collection>
<auth-constraint />
</security-constraint>
Tamam, şimdi:
Eğer yöntem ile bir istek DELETE
yaparsam 403 geri alırım.
Eğer yöntem ile bir istek delete
yaparsam 403 geri alırım.
FAKAT
Ben yöntem ile bir istek DeLeTe
yaparsam ben OK olsun!
Bu büyük / küçük harfe duyarsız hale nasıl getirebilirim?
Düzenleme: Ben bir C # programı ile test:
private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = "making request";
System.Threading.Thread.Sleep(400);
WebRequest req = WebRequest.Create("http://serverurl/Application/cache_test.jsp");
req.Method = txtMethod.Text;
try
{
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
textBox1.Text = "Status: " + resp.StatusCode;
if (resp.StatusCode == System.Net.HttpStatusCode.OK)
{
WebHeaderCollection header = resp.Headers;
using (System.IO.StreamReader reader = new System.IO.StreamReader(resp.GetResponseStream(), ASCIIEncoding.ASCII))
{
//string responseText = reader.ReadToEnd();
textBox1.Text += "\r\n" + reader.ReadToEnd();
}
}
}
catch (Exception ex)
{
textBox1.Text = ex.Message;
}
}
txtMethod.Text
yöntem adını yazdığım bir metin kutusudur. 403 olduğunda, yakalama bloğunda yakalanan bir istisna atılır.
Cache_test.jsp içeriği:
<%
response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
response.setHeader("Pragma","no-cache");
out.print("Method used was: "+request.getMethod());
%>
HttpWebRequest
olacaktır harf-duyarsızca tanımak ve dönüştürmek büyük harfe standart HTTP yöntemlerini. Ayrıca, yalnızca standart HTTP yöntemlerine izin verildiği belgelenmiştir . En iyi seçenek ham TCP akışı kullanmaktır (örneğin netcat, PuTTY raw veya telnet vb.).