HttpPost

Si el controlador está para recibir peticiones del tipo POST, se tienen que cumplir unas condiciones para que el método execute pueda procesar estas peticiones.

Las condiciones son:

  • El método de la petición tiene que ser del tipo POST
  • X-Requested-With: "XMLHttpRequest"

Si lo que queremos es recibir peticiones POST hechas por plataformas terceras que llavan csfr, tenemos la opción de usar el interface CsrfAwareActionInterface

        private function validateRequest(
            HttpRequest $request,
            ActionInterface $action
        ): bool {
            $valid = null;
            if ($action instanceof CsrfAwareActionInterface) {
                $valid = $action->validateForCsrf($request);
            }
            if ($valid === null) {
                $valid = !$request->isPost()
                    || $request->isXmlHttpRequest()
                    || $this->formKeyValidator->validate($request);
            }
    
            return $valid;
        }
    

Por ello, los formularios de Magento 2, el submit se hace siempre con javascript mediante el método Ajax, que por defecto lleva el header XMLHttpRequest