I have added a servlet for POST. Below is a snippet of relevant code.
I have removed POST from "Apache Granite CSRF" and "Apache Sling Referrer Filter" - and enabled Empty.
405 Method POST not supported
Method POST not supported
Cannot serve request to /bin/StreamPDF in com.s360g.aem.workflowcomponent.core.servlets.StreamPDF
<pre>
0 TIMER_START{Request Processing}
3 COMMENT timer_end format is {<elapsed microseconds>,<timer name>} <optional message>
10 LOG Method=POST, PathInfo=null
14 TIMER_START{handleSecurity}
7709 TIMER_END{7694,handleSecurity} authenticator org.apache.sling.auth.core.impl.SlingAuthenticator@189b106c returns true
8090 TIMER_START{ResourceResolution}
8158 TIMER_END{67,ResourceResolution} URI=/bin/StreamPDF resolves to Resource=ServletResource, servlet=com.s360g.aem.workflowcomponent.core.servlets.StreamPDF, path=/bin/StreamPDF
8166 LOG Resource Path Info: SlingRequestPathInfo: path='/bin/StreamPDF', selectorString='null', extension='null', suffix='null'
8166 TIMER_START{ServletResolution}
8170 TIMER_START{resolveServlet(/bin/StreamPDF)}
8195 TIMER_END{24,resolveServlet(/bin/StreamPDF)} Using servlet com.s360g.aem.workflowcomponent.core.servlets.StreamPDF
8198 TIMER_END{31,ServletResolution} URI=/bin/StreamPDF handled by Servlet=com.s360g.aem.workflowcomponent.core.servlets.StreamPDF
8205 LOG Applying Requestfilters
8214 LOG Calling filter: com.adobe.granite.resourceresolverhelper.impl.ResourceResolverHelperImpl
8222 LOG Calling filter: org.apache.sling.security.impl.ContentDispositionFilter
8226 LOG Calling filter: com.adobe.granite.csrf.impl.CSRFFilter
8232 LOG Calling filter: org.apache.sling.i18n.impl.I18NFilter
8237 LOG Calling filter: com.adobe.granite.httpcache.impl.InnerCacheFilter
8245 LOG Calling filter: org.apache.sling.rewriter.impl.RewriterFilter
8249 LOG Calling filter: com.adobe.cq.history.impl.HistoryRequestFilter
8441 LOG Calling filter: com.day.cq.wcm.core.impl.WCMRequestFilter
8463 LOG Calling filter: com.adobe.fd.core.security.internal.CurrentUserServiceImpl
8732 LOG Calling filter: com.adobe.cq.wcm.core.components.internal.servlets.CoreFormHandlingServlet
8764 LOG Calling filter: com.adobe.granite.optout.impl.OptOutFilter
8773 LOG Calling filter: com.day.cq.wcm.foundation.forms.impl.FormsHandlingServlet
8776 LOG Calling filter: com.adobe.cq.social.commons.cors.CORSAuthenticationFilter
8780 LOG Calling filter: com.adobe.livecycle.dsc.clientsdk.internal.ResourceResolverHolderFilter
8784 LOG Calling filter: org.apache.sling.engine.impl.debug.RequestProgressTrackerLogFilter
8788 LOG Calling filter: com.adobe.livecycle.content.appcontext.impl.AppContextFilter
8793 LOG Calling filter: com.aemforms.prefill.core.filters.LoggingFilter
8797 LOG Calling filter: com.s360g.aem.workflowcomponent.core.filters.LoggingFilter
8872 LOG Calling filter: com.s360g.aem.cnp.core.filters.LoggingFilter
8876 LOG Calling filter: com.day.cq.wcm.mobile.core.impl.redirect.RedirectFilter
8879 LOG Calling filter: com.day.cq.wcm.core.impl.AuthoringUIModeServiceImpl
8996 LOG Calling filter: com.adobe.granite.rest.assets.impl.AssetContentDispositionFilter
9000 LOG Calling filter: com.adobe.granite.requests.logging.impl.RequestLoggerImpl
9005 LOG Calling filter: com.adobe.granite.rest.impl.servlet.ApiResourceFilter
9041 LOG Calling filter: com.day.cq.dam.core.impl.servlet.ActivityRecordHandler
9057 LOG Calling filter: com.day.cq.dam.core.impl.assetlinkshare.AdhocAssetShareAuthHandler
9061 LOG Calling filter: com.adobe.cq.social.ugcbase.security.impl.SaferSlingPostServlet
9102 LOG Calling filter: com.day.cq.wcm.core.impl.warp.TimeWarpFilter
9113 LOG Applying Componentfilters
9115 LOG Calling filter: com.day.cq.personalization.impl.TargetComponentFilter
9118 LOG Calling filter: com.day.cq.wcm.core.impl.page.PageLockFilter
9147 LOG Calling filter: com.day.cq.wcm.core.impl.WCMComponentFilter
9379 LOG Calling filter: com.day.cq.wcm.core.impl.WCMDebugFilter
9407 TIMER_START{com.s360g.aem.workflowcomponent.core.servlets.StreamPDF#0}
10122 LOG Applying Error filters
10129 LOG Calling filter: org.apache.sling.i18n.impl.I18NFilter
10133 LOG Calling filter: org.apache.sling.rewriter.impl.RewriterFilter
10177 TIMER_START{handleError:status=405}
11245 TIMER_END{1066,handleError:status=405} Using handler /libs/sling/servlet/errorhandler/default.jsp
34511 LOG Found processor for post processing ProcessorConfiguration: {contentTypes=[text/html], order=-1, active=true, valid=true, processErrorResponse=true, pipeline=(generator=Config(type=htmlparser, config={}), transformers=(Config(type=linkchecker, config={}), Config(type=mobile, config=JcrPropertyMap [node=Node[NodeDelegate{tree=/libs/cq/config/rewriter/default/transformer-mobile: { jcr:primaryType = nt:unstructured, component-optional = true}}], values={jcr:primaryType=nt:unstructured, component-optional=true}]), Config(type=mobiledebug, config=JcrPropertyMap [node=Node[NodeDelegate{tree=/libs/cq/config/rewriter/default/transformer-mobiledebug: { jcr:primaryType = nt:unstructured, component-optional = true}}], values={jcr:primaryType=nt:unstructured, component-optional=true}]), Config(type=contentsync, config=JcrPropertyMap [node=Node[NodeDelegate{tree=/libs/cq/config/rewriter/default/transformer-contentsync: { jcr:primaryType = nt:unstructured, component-optional = true}}], values={jcr:primaryType=nt:unstructured, component-optional=true}]), serializer=Config(type=htmlwriter, config={}))}
35169 TIMER_END{35167,Request Processing} Dumping SlingRequestProgressTracker Entries
</pre>
--- Code ---
...
@8220494(service = Servlet.class, property = {
Constants.SERVICE_DESCRIPTION + "=Servlet to return PDF",
"sling.servlet.methods=" + HttpConstants.METHOD_POST,
"sling.servlet.paths=" + "/bin/StreamPDF" })
@ServiceDescription("PDF Servlet")
public class StreamPDF extends SlingSafeMethodsServlet {
...
private static final Logger log = LoggerFactory.getLogger(StreamPDF.class);
protected void doPost(final SlingHttpServletRequest request, final SlingHttpServletResponse response) throws ServletException, IOException {
....
}
Any ideas?