-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathCorsFilter.cpp
More file actions
23 lines (20 loc) · 819 Bytes
/
CorsFilter.cpp
File metadata and controls
23 lines (20 loc) · 819 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//
// Created by victor on 11/7/17.
//
#include <proxygen/httpserver/Filters.h>
#include "CorsFilter.h"
namespace restdbxx {
CorsFilter::CorsFilter(proxygen::RequestHandler *upstream) : proxygen::Filter(upstream), _origin("*") {}
void CorsFilter::onRequest(std::unique_ptr<proxygen::HTTPMessage> headers) noexcept {
bool exists = headers->getHeaders().exists(proxygen::HTTPHeaderCode::HTTP_HEADER_ORIGIN);
if (exists) {
_origin = headers->getHeaders().getSingleOrEmpty(proxygen::HTTPHeaderCode::HTTP_HEADER_ORIGIN);
}
upstream_->onRequest(std::move(headers));
}
void CorsFilter::sendHeaders(proxygen::HTTPMessage &msg) noexcept {
msg.getHeaders().set(proxygen::HTTPHeaderCode::HTTP_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN, _origin);
downstream_->sendHeaders(msg);
}
CorsFilter::~CorsFilter() = default;
}