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 DELETEsaya mendapatkan kembali 403.
Jika saya melakukan permintaan dengan metode deletesaya mendapatkan kembali 403.
TAPI
Jika saya melakukan permintaan dengan metode DeLeTesaya 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.Textadalah 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());
%>
HttpWebRequestakan 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.).