From 42ab3168c5eabbc407354dc2477c7ad7482891df Mon Sep 17 00:00:00 2001 From: Martin Becker Date: Wed, 19 Jul 2017 09:59:34 +0200 Subject: [PATCH] Switch to setting extra headers via function --- src/WebSockets.h | 2 ++ src/WebSocketsClient.cpp | 16 ++++++++++++---- src/WebSocketsClient.h | 3 +++ 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/WebSockets.h b/src/WebSockets.h index 1e62469..41cbe7d 100644 --- a/src/WebSockets.h +++ b/src/WebSockets.h @@ -226,6 +226,8 @@ typedef struct { String base64Authorization; ///< Base64 encoded Auth request String plainAuthorization; ///< Base64 encoded Auth request + String extraHeaders; + bool cHttpHeadersValid; ///< non-websocket http header validity indicator size_t cMandatoryHeadersCount; ///< non-websocket mandatory http headers present count diff --git a/src/WebSocketsClient.cpp b/src/WebSocketsClient.cpp index 1dfcfba..787b7a5 100644 --- a/src/WebSocketsClient.cpp +++ b/src/WebSocketsClient.cpp @@ -29,6 +29,7 @@ WebSocketsClient::WebSocketsClient() { _cbEvent = NULL; _client.num = 0; + _client.extraHeaders = "Origin: file://"; } WebSocketsClient::~WebSocketsClient() { @@ -274,6 +275,15 @@ void WebSocketsClient::setAuthorization(const char * auth) { } } +/** + * set extra headers for the http request; + * separate headers by "\r\n" + * @param extraHeaders const char * extraHeaders + */ +void WebSocketsClient::setExtraHeaders(const char * extraHeaders) { + _client.extraHeaders = extraHeaders; +} + //################################################################################# //################################################################################# //################################################################################# @@ -479,10 +489,8 @@ void WebSocketsClient::sendHeader(WSclient_t * client) { handshake += WEBSOCKETS_STRING("Connection: keep-alive\r\n"); } -#ifndef WEBSOCKET_HEADERS_NO_ORIGIN - // add origin header if requested - handshake += WEBSOCKETS_STRING("Origin: file://\r\n"); -#endif + // add extra headers; by default this includes "Origin: file://" + handshake += client->extraHeaders + NEW_LINE; handshake += WEBSOCKETS_STRING("User-Agent: arduino-WebSocket-Client\r\n"); diff --git a/src/WebSocketsClient.h b/src/WebSocketsClient.h index d8b6814..df9bbef 100644 --- a/src/WebSocketsClient.h +++ b/src/WebSocketsClient.h @@ -80,6 +80,9 @@ class WebSocketsClient: private WebSockets { void setAuthorization(const char * user, const char * password); void setAuthorization(const char * auth); + + void setExtraHeaders(char * extraHeaders); + void setExtraHeaders(const char * extraHeaders); protected: String _host;