Running his first Java Servlet today, one of my delegates reported an HTTP status 405 from his code when he tried to browse to it. A new one on me ... I am used to a good number of other return codes, but hadn't seen this before.
It turns out that the cause was the lack of an appropriate doGet method in the Servlet class; in my delegate's case he
had provided a doGet but with the wrong type of parameters, so instead of providing a method that Tomcat could call up he had provided what was, in effect, an internally available method only. I was able to reproduce the error later for the purpose of this note by simply mis-spelling doGet as doget ... Capital G to lower case g.
Wrong:
public void doget ( HttpServletRequest request,
HttpServletResponse response )
throws ServletException, IOException {
Right:
public void doGet ( HttpServletRequest request,
HttpServletResponse response )
throws ServletException, IOException {
Here are some other common 400 series errors we come across, and their typical causes to help you troubleshoot:
400 - Bad request
Typically this is caused by a user writing his own web client (for example using Web 2 techniques) and so making an illegal instruction call to the server
403 - Forbidden
A file exists on the server that is mapped to the URL that was given,
but that file is not readable by the web server process. Typically, this error occurs when the web site administrator is uploading a file via FTP or copying it into place and gets the file permissions or ownership wrong.
404 - Not Found
The most common of the lot. The request was valid, but doesn't point to anything which exists on the server. It could be that the user (at the browser) has mistyped a URL, it could be that there's a broken link on a web page pointing at thin air, and it could be that a file that should exist on the server doesn't, or has been accidentally deleted. You will also get a lot of 404 errors in your server logs relating to malicious software that's poking around looking for holes in your security!
401 - Unauthorized
The page exists, but the user has failed to enter a correct user name and passwordd to access it. See .htpasswd in the Apache documentation.
(written 2008-01-12, updated 2008-01-14)
2faf
| Commentator | says ... | | Leah: | Just a note to add that 403 - Forbidden is also returned when a deny by ip address or other parameter is used in an .htaccess file. (comment added 2008-01-14 13:55:01) |
Associated topics are indexed under
A207 - Web Application Deployment - HTTP [3432] 3 digit HTTP status codes - what are they, which are most common, which should be a concern? - (2011-09-11)
[2918] Downloading a report from the web for further local analysis - (2010-08-13)
[2738] What is all this SESSION stuff about? (PHP) - (2010-04-25)
[2596] Http protocol - what does a web server send - (2010-01-24)
[2321] Uploading and Downloading files - changing names (Perl and PHP) - (2009-08-04)
[1549] http, https and ajp - comparison and choice - (2008-02-22)
[1378] Etag in http headers - what is it? - (2007-10-03)
[484] Setting the file name for a downloaded document - (2005-11-03)
A606 - Web Application Deployment - Apache httpd - log files and log tools [3984] 20 minutes in to our 15 minutes of fame - (2013-01-20)
[3974] TV show appearance - how does it effect your web site? - (2013-01-13)
[3670] Reading Google Analytics results, based on the relative populations of countries - (2012-03-24)
[3554] Learning more about our web site - and learning how to learn about yours - (2011-12-17)
[3491] Who is knocking at your web site door? Are you well set up to deal with allcomers? - (2011-10-21)
[3447] Needle in a haystack - finding the web server overload - (2011-09-18)
[3443] Getting more log information from the Apache http web server - (2011-09-16)
[3087] Making the most of critical emails - reading behind the scene - (2010-12-16)
[3027] Server logs - drawing a graph of gathered data - (2010-11-03)
[3019] Apache httpd Server Status - monitoring your server - (2010-10-28)
[3015] Logging the performance of the Apache httpd web server - (2010-10-25)
[1796] libwww-perl and Indy Library in your server logs? - (2008-09-13)
[1780] Server overloading - turns out to be feof in PHP - (2008-09-01)
[1761] Logging Cookies with the Apache httpd web server - (2008-08-20)
[1656] Be careful of misreading server statistics - (2008-05-28)
[1598] Every link has two ends - fixing 404s at the recipient - (2008-04-02)
[1237] What proportion of our web traffic is robots? - (2007-06-19)
[376] What brings people to my web site? - (2005-07-13)
A654 - Web Application Deployment - Configuring and Controlling Tomcat [3043] Gathering information - logging - with log4j. First steps. - (2010-11-12)
[2652] Reading and writing cookies in Java Servlets and JSPs - (2010-02-26)
[2163] CATALINA_OPTS v JAVA_OPTS - What is the difference? - (2009-05-09)
[2061] Tomcat 6 - Annotated Sample Configuration Files - (2009-03-01)
[2039] The Invoker - (2009-02-13)
[1994] tomcat-users.xml; what a difference a space made - (2009-01-16)
[1943] Port and Glasses - (2008-12-14)
[1762] WEB-INF (Tomcat) and .htaccess (httpd) - (2008-08-20)
[1553] Automatic startup and shutdown of Tomcat - (2008-02-24)
[1370] Apache Tomcat Performance Tuning - (2007-09-29)
[1351] Compressing web pages sent out from server. Is it worth it? - (2007-09-14)
[914] A practical example of roles - (2006-11-04)
[907] Browser -> httpd -> Tomcat -> MySQL. Restarting. - (2006-10-28)
[837] Tomcat - Shutdown port - (2006-08-18)
Some other Articles
Comments on proposed Asda Superstore for MelkshamOngoing Image Copyright Issues, PHP and MySQL solutionsScript to present commonly used images - PHPFlooding by Asda-s proposed new supermarketWeb page (http) error status 405Java, sorting, ArrayList example, genericsJava - using super to call a method in the parent classFirst Class Java. First step and moving forward.Climate change, renewable resources and paper v plasticJava is a dynamic language .... (and comparison)