Saya telah memasukkan yang berikut ini di web.xml aplikasi saya untuk mencoba melarang PUT, DELETE, dll .:
<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>
Ok jadi sekarang:
Jika saya melakukan permintaan dengan metode DELETE
saya mendapatkan kembali 403.
Jika saya melakukan permintaan dengan metode delete
saya mendapatkan kembali 403.
TAPI
Jika saya melakukan permintaan dengan metode DeLeTe
saya mendapatkan OK!
Bagaimana saya bisa membuatnya tidak peka terhadap huruf besar-kecil ini?
Sunting: Saya mengujinya dengan program C #:
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
adalah kotak teks tempat saya mengetik nama metode. Ketika ada 403 pengecualian dilemparkan yang ditangkap di blok tangkap.
Cache_test.jsp berisi:
<%
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
akan mengenali dan mengubah metode HTTP standar menjadi huruf besar secara tidak sensitif . Selain itu, ini didokumentasikan sebagai hanya memungkinkan metode HTTP standar. Pilihan terbaik adalah menggunakan aliran TCP mentah (mis. Dalam netcat, atau PuTTY raw, atau telnet, dll.).