Class CspReportAction

java.lang.Object
org.apache.struts2.ActionSupport
org.apache.struts2.action.CspReportAction
All Implemented Interfaces:
Serializable, Action, ServletRequestAware, ServletResponseAware, ValidationAware, LocaleProvider, TextProvider, Validateable
Direct Known Subclasses:
DefaultCspReportAction

public abstract class CspReportAction extends ActionSupport implements ServletRequestAware, ServletResponseAware
An abstract Action that can be extended to process the incoming CSP violation reports. Performs necessary checks to extract the JSON string of the CSP report and make sure it's a valid report. Always returns a 204 response. Override the processReport(String jsonCspReport) method to customize how the action processes the CSP report. See DefaultCspReportAction for the default implementation. Add the action to the endpoint that is the reportUri in the CspInterceptor to collect the reports.
     <package name="csp-reports" namespace="/" extends="struts-default">
         <action name="csp-reports" class="org.apache.struts2.action.DefaultCspReportAction">
             <result type="httpheader">
                 <param name="status">204</param>
             </result>
         </action>
     </package>
 
See Also:
  • Field Details

  • Constructor Details

    • CspReportAction

      public CspReportAction()
  • Method Details

    • setMaxReportSize

      public void setMaxReportSize(String maxReportSize)
      Sets the upper bound, in characters, on an accepted report body. A body exceeding this size is discarded and not passed to processReport(String).

      The value is injected from struts.csp.report.maxSize when the action is built, which is before the interceptor stack runs. It is deliberately not an action property: the report body is read by withServletRequest(HttpServletRequest), which the servletConfig interceptor invokes ahead of staticParams and params, so a value applied by either of those would arrive too late to have any effect.

      Parameters:
      maxReportSize - maximum accepted report size in characters
      Since:
      7.3.0
    • withServletRequest

      public void withServletRequest(jakarta.servlet.http.HttpServletRequest request)
      Description copied from interface: ServletRequestAware
      Applies the HTTP request object in implementing classes.
      Specified by:
      withServletRequest in interface ServletRequestAware
      Parameters:
      request - the HTTP request.
    • withServletResponse

      public void withServletResponse(jakarta.servlet.http.HttpServletResponse response)
      Description copied from interface: ServletResponseAware
      Applies the HTTP response object in implementing classes.
      Specified by:
      withServletResponse in interface ServletResponseAware
      Parameters:
      response - the HTTP response.
    • setServletRequest

      public void setServletRequest(jakarta.servlet.http.HttpServletRequest request)
    • getServletRequest

      public jakarta.servlet.http.HttpServletRequest getServletRequest()