add support for OPTIONS http method

This commit is contained in:
2022-08-11 08:04:40 +02:00
parent f651df6e1f
commit ceb5336ca1
7 changed files with 41 additions and 10 deletions

View File

@@ -160,6 +160,13 @@ void FunctionBase::MakeDelete()
}
void FunctionBase::MakeOptions()
{
cur->request->http_status = Header::status_204_no_content;
cur->request->out_headers.add(Header::allow, L"OPTIONS, GET, HEAD, POST, DELETE");
}
void FunctionBase::Clear()
{
// do nothing by default
@@ -183,6 +190,10 @@ void FunctionBase::ContinueMakeDelete()
// do nothing by default
}
void FunctionBase::ContinueMakeOptions()
{
// do nothing by default
}
} // namespace Winix

View File

@@ -113,6 +113,7 @@ public:
virtual void MakePost();
virtual void MakeGet();
virtual void MakeDelete();
virtual void MakeOptions();
virtual void Clear();
/*
@@ -122,6 +123,7 @@ public:
virtual void ContinueMakePost();
virtual void ContinueMakeGet();
virtual void ContinueMakeDelete();
virtual void ContinueMakeOptions();
//void SetConfig(Config * pconfig);

View File

@@ -505,6 +505,12 @@ void Functions::MakeFunction()
cur->request->function->MakeDelete();
}
else
if( cur->request->method == Request::options )
{
if( cur->request->redirect_to.empty() )
cur->request->function->MakeOptions();
}
else
{
log << log1 << "Functions: unknown request method (skipping)" << logend;
}
@@ -557,6 +563,13 @@ void Functions::ContinueMakeFunction()
cur->request->function->ContinueMakeDelete();
}
else
if( cur->request->method == Request::options )
{
log << log4 << "Functions: continuing method options for request " << cur->request
<< " for function " << cur->request->function->fun.url << logend;
cur->request->function->ContinueMakeOptions();
}
else
{
log << log1 << "Functions: cannot continue a request, unknown request method (skipping)" << logend;
}