PUT and POST getting 405 Method Not Allowed Error for Restful Web Services

后端 未结 6 2259
无人及你
无人及你 2020-12-09 18:32

I am trying to set up a simple Restful Web-Service which returns either JSON or XML according to the Accept header. I am using Spring, Maven and WebLogic Server. I took the

相关标签:
6条回答
  • 2020-12-09 19:11

    I same thing happen with me, If your code is correct and then also give 405 error. this error due to some authorization problem. go to authorization menu and change to "Inherit auth from parent".

    Authorization Type options menu Authorization Inherit auth from parent selected

    0 讨论(0)
  • 2020-12-09 19:12

    The problem is that POST method is forbidden for Nginx server's static files requests. Here is the workaround:

    # Pass 405 as 200 for requested address:
    
    server {
    listen       80;
    server_name  localhost;
    
    location / {
        root   html;
        index  index.html index.htm;
    }
    
    error_page  404     /404.html;
    error_page  403     /403.html;
    
    error_page  405     =200 $uri;
    }
    

    If using proxy:

    # If Nginx is like proxy for Apache:
    
    error_page 405 =200 @405; 
    
    location @405 { 
        root /htdocs; 
        proxy_pass http://localhost:8080; 
    }
    

    If using FastCGI:

    location ~\.php(.*) {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_split_path_info ^(.+\.php)(.*)$;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
    include /etc/nginx/fastcgi_params;
    }
    

    Browsers usually use GET, so you can use online tools like ApiTester to test your requests.

    Source

    • http://translate.google.com/translate?hl=&sl=ru&tl=en&u=https%3A%2F%2Fruhighload.com%2F%D0%9E%D1%88%D0%B8%D0%B1%D0%BA%D0%B0%20nginx%20405%20not%20allowed
    0 讨论(0)
  • 2020-12-09 19:13

    Well, apparently I had to change my PUT calling function updateUser. I removed the @Consumes, the @RequestMapping and also added a @ResponseBody to the function. So my method looked like this:

    @RequestMapping(value="/{id}",method = RequestMethod.PUT)
    @ResponseStatus(HttpStatus.OK)
    @ResponseBody
    public void updateUser(@PathVariable int id, @RequestBody User temp){
        Set<User> set1= obj2.getUsers();
        for(User a:set1)
        {
            if(id==a.getId())
            {
                set1.remove(a);
                a.setId(temp.getId());
                a.setName(temp.getName());
                set1.add(a);
            }
        }
        Userlist obj3=new Userlist(set1);
        obj2=obj3;
    }
    

    And it worked!!! Thank you all for the response.

    0 讨论(0)
  • 2020-12-09 19:16

    In my case the form (which I cannot modify) was always sending POST.
    While in my Web Service I tried to implement GET method (due to lack of documentation I expected that both are allowed).

    Thus, it was failing as "Not allowed", since there was no method with POST type on my end.

    Changing @GET to @POST above my WS method fixed the issue.

    0 讨论(0)
  • 2020-12-09 19:17

    I'm not sure if I am correct, but from the request header that you post:

    Request headers

    Accept: Application/json

    Origin: chrome-extension://hgmloofddffdnphfgcellkdfbfbjeloo

    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.76 Safari/537.36

    Content-Type: application/x-www-form-urlencoded

    Accept-Encoding: gzip,deflate,sdch Accept-Language: en-US,en;q=0.8

    it seems like you didn't config your request body to JSON type.

    0 讨论(0)
  • 2020-12-09 19:22

    Notice Allowed methods in the response

    Connection: close
    Date: Tue, 11 Feb 2014 15:17:24 GMT 
    Content-Length: 34 
    Content-Type: text/html 
    Allow: GET, DELETE 
    X-Powered-By: Servlet/2.5 JSP/2.1
    

    It accepts only GET and DELETE. Hence, you need to tweak the server to enable PUT and POST as well.

    Allow: GET, DELETE
    
    0 讨论(0)
提交回复
热议问题