web:response-header & Set-Cookie

Tuesday, 18 September 2018 · 2 messages
BB
Bogdan Bogucki18 Sep 2018 00:30 #
Hello, When I try invoke following code: return (
    web:response-header(
map { 'media-type': web:content-type($path) }, map { 'Cache-Control': 'max-age=3600,public' }, map { 'Set-Cookie': 'JSESSIONID=' || session:id() || ';max-age=1800' } ),
    file:read-binary($path)
} I receive error: [XPTY0004] Unknown option 'Set-Cookie'. I am able to set cookie using <rest:response>. Following code is working: return (
    <rest:response>

      <http:response status="200" message="OK">

        <http:header name="media-type" value="{web:content-type($path)}"/>

        <http:header name="Content-Type" value="text/html"/>

        <http:header name="Cache-Control" value="max-age=3600,public"/>

        <http:header name="Set-Cookie" value="{'JSESSIONID=' || session:id()
|| ';max-age=1800'}"/>

      </http:response>

    </rest:response>,

    file:read-binary($path)
) I think function web:response-header should allow set cookie. Regards Bogdan Bogucki
ML
Marco Lettere18 Sep 2018 09:40 #
Hi Bogdan, I assume the last map is for options only. All headers should go into the second map. Try with: return (
     web:response-header(
map { 'media-type': web:content-type($path) }, map { 'Cache-Control': 'max-age=3600,public', 'Set-Cookie': 'JSESSIONID=' || session:id() || ';max-age=1800' }, map { 'status' : 200} ),
     file:read-binary($path)
}
Quoted text · Bogdan Bogucki · 59 lines
On 18/09/2018 00:30, Bogdan Bogucki wrote: > > Hello, > > When I try invoke following code: > > return ( > > web:response-header( > > map { 'media-type': web:content-type($path) }, > > map { 'Cache-Control': 'max-age=3600,public' }, > > map { 'Set-Cookie': 'JSESSIONID=' || session:id() || > ';max-age=1800' } > > ), > > file:read-binary($path) > > } > > I receive error: > > [XPTY0004] Unknown option 'Set-Cookie'. > > I am able to set cookie using <rest:response>. > > Following code is working: > > return ( > > <rest:response> > > <http:response status="200" message="OK"> > > <http:header name="media-type" value="{web:content-type($path)}"/> > > <http:header name="Content-Type" value="text/html"/> > > <http:header name="Cache-Control" value="max-age=3600,public"/> > > <http:header name="Set-Cookie" value="{'JSESSIONID=' || > session:id() || ';max-age=1800'}"/> > > </http:response> > > </rest:response>, > > file:read-binary($path) > > ) > > I think function web:response-header should allow set cookie. > > Regards > Bogdan Bogucki >

⚡Generated with XQuery