What you can do is create new page to your application that is authenticated.
Call procedure in that new page before header process like
schema.download_image(p_id => :REQUEST); APEX_APPLICATION.STOP_APEX_ENGINE;
Then point browser to
Thanks for the suggestion. Unfortunately, I'm not sure that will work for my instance. I am calling the procedure via a URL as part of an image map. As you can see below. The page dynamically builds the HTML as the page opens, then the image map displays.
Tonyimg id="ImageMap" src="schema.download_image?p_id=3306" usemap="#ImageMap" border="0" width="859" height="408" alt="" /> map id="_ImageMap" name="ImageMap"> area shape="rect" coords="50,50,86,89" href="http://server.xxx.com:7000/apex/f?p=2031:10:309826909842601::NO::P10_HEADER_ID,P10_CELL_TITLE:489526,1-2" alt="1-2" title="1-2" />
That should work.
You change img src to
Create an application process within APEX called 'download_image';
The link to the process should be;
<app id>&p_flow_step_id=0&x01=<your own internal id>
The process should simply call your schema process using the value passed in the x01 parameter;
schema.download_image(p_id => apex_application.g_x01 );
You can apply authorisation scheme to the APEX application process, or check :APP_USER, call APEX authentication functions etc within the code.