shuaijinchao commented on a change in pull request #6168:
URL: https://github.com/apache/apisix/pull/6168#discussion_r789293010



##########
File path: apisix/core/request.lua
##########
@@ -223,7 +223,7 @@ function _M.get_body(max_size, ctx)
 
     local file_name = req_get_body_file()
     if not file_name then
-        return nil
+        return nil, "request body has zero size"

Review comment:
       I also found this issue yesterday, so was wondering if it is possible to 
add a request method check at the entry of the get_body function. When the 
request is not `POST` or `PUT`, the operation is returned directly. Respond 
with proper error messages when `if not file_name then`.
   
   This not only follows the rfc7231 specification while avoiding unnecessary 
body reading, but is also compatible with existing code.
   
   like this:
   ```lua
   local function check_get_body_method()
       -- https://datatracker.ietf.org/doc/html/rfc7231#section-4.3
       local method = req_get_method()
       method = str_upper(method)
       if method ~= "POST" or method ~= "PUT" then
           log.info("only `POST` and `PUT` requests are supported to get the 
body, ",
                    "the current request method: ", method)
           return false
       end
   
       return true
   end
   
   
   function _M.get_body(max_size, ctx)
       if not check_get_body_method() then
           return
       end
   
        ...
   
        local file_name = req_get_body_file()
       if not file_name then
           return nil, "request body has zero size"
       end
        
        ...
   end
   ```




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to