[Libwebsockets] Adding a custom header

Andy Green andy at warmcat.com
Thu Nov 12 01:59:09 CET 2020

On 11/11/20 10:14 PM, Søren Holm wrote:
> Hi
> According to the documentation I can get a LWS_CALLBACK_ADD_HEADERS in my http
> callback function to add additional headers, but the callback never happens.
> Me code is basically the minimal-http-server-form-post-file with very few
> modifications.
> I hope you can help me out - I've been fighting for hours.

Sometimes for file post you are creating your own response headers in 
code, you can put what you want in there at that time.  In the example 
you mention it takes the approach to do a redirect when the post 
completes instead.

For server static header addition, you can set any static headers you 
want added in responses by providing a linked-list of pvos at vhost 
creation time

	const struct lws_protocol_vhost_options *headers;
		/**< VHOST: pointer to optional linked list of per-vhost
		 * canned headers that are added to server responses */

Any http responses will go out with those headers, this is, eg, how 
lwsws / libwebsockets.org is issuing its Content Security Policy headers.

LWS_CALLBACK_ADD_HEADERS is covering the case you want to issue custom 
dynamic headers either on content served via a _FILE mount, or in the ws 
upgrade response.  For the former, it's going to direct the callback to 
the .protocol name mentioned in the mount... in the example case, just 
set the mount's .protocol to "http" instead of NULL so it can bind to 
the protocol handler in the example and issue ADD_HEADERS there.


More information about the Libwebsockets mailing list