set Access-Control-Allow-Credentials if available

This commit is contained in:
Tomasz Sowa 2022-09-07 14:46:29 +02:00
parent 8b9ad5d079
commit 9f64692ede
3 changed files with 25 additions and 4 deletions

View File

@ -54,10 +54,11 @@ public:
static constexpr const wchar_t * accept_language = L"Accept-Language";
static constexpr const wchar_t * authorization = L"Authorization";
static constexpr const wchar_t * allow = L"Allow";
static constexpr const wchar_t * access_control_allow_methods = L"Access-Control-Allow-Methods";
static constexpr const wchar_t * access_control_allow_origin = L"Access-Control-Allow-Origin";
static constexpr const wchar_t * access_control_allow_headers = L"Access-Control-Allow-Headers";
static constexpr const wchar_t * access_control_max_age = L"Access-Control-Max-Age";
static constexpr const wchar_t * access_control_allow_methods = L"Access-Control-Allow-Methods";
static constexpr const wchar_t * access_control_allow_origin = L"Access-Control-Allow-Origin";
static constexpr const wchar_t * access_control_allow_headers = L"Access-Control-Allow-Headers";
static constexpr const wchar_t * access_control_allow_credentials = L"Access-Control-Allow-Credentials";
static constexpr const wchar_t * access_control_max_age = L"Access-Control-Max-Age";
/*
* headers' names lower case

View File

@ -170,6 +170,12 @@ bool FunctionBase::IsCorsOriginAvailable(const std::wstring & origin_url)
}
bool FunctionBase::AreCorsCredentialsAvailable()
{
return true;
}
bool FunctionBase::AreCorsHeadersAvailable(const std::wstring & headers)
{
// true by default for all headers
@ -227,6 +233,13 @@ void FunctionBase::AddAccessControlMaxAgeHeader()
}
void FunctionBase::AddAccessControlAllowCredentialsHeader()
{
cur->request->AddHeader(Header::access_control_allow_credentials, L"true");
}
void FunctionBase::MakeGet()
{
// do nothing by default
@ -293,6 +306,11 @@ void FunctionBase::MakeOptions()
AddAccessControlAllowOriginHeader(*cors_origin->get_wstr());
AddAccessControlMaxAgeHeader();
if( AreCorsCredentialsAvailable() )
{
AddAccessControlAllowCredentialsHeader();
}
if( cors_headers && cors_headers->is_wstr() )
{
AddAccessControlAllowHeadersHeader(*cors_headers->get_wstr());

View File

@ -113,12 +113,14 @@ public:
virtual bool IsCorsMethodAvailable(Request::Method method);
virtual bool IsCorsOriginAvailable(const std::wstring & origin_url);
virtual bool AreCorsCredentialsAvailable();
virtual bool AreCorsHeadersAvailable(const std::wstring & headers);
virtual void AddAccessControlAllowMethodsHeader(Request::Method method);
virtual void AddAccessControlAllowOriginHeader(const std::wstring & origin_url);
virtual void AddAccessControlAllowHeadersHeader(const std::wstring & headers);
virtual void AddAccessControlMaxAgeHeader();
virtual void AddAccessControlAllowCredentialsHeader();
virtual void MakeGet();