本文整理汇总了C++中WebRequest::envValue方法的典型用法代码示例。如果您正苦于以下问题:C++ WebRequest::envValue方法的具体用法?C++ WebRequest::envValue怎么用?C++ WebRequest::envValue使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WebRequest
的用法示例。
在下文中一共展示了WebRequest::envValue方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getClientAddress
std::string WEnvironment::getClientAddress(const WebRequest& request,
const Configuration& conf)
{
std::string result;
/*
* Determine client address, taking into account proxies
*/
if (conf.behindReverseProxy()) {
std::string clientIp = request.headerValue("Client-IP");
boost::trim(clientIp);
std::vector<std::string> ips;
if (!clientIp.empty())
boost::split(ips, clientIp, boost::is_any_of(","));
std::string forwardedFor = request.headerValue("X-Forwarded-For");
boost::trim(forwardedFor);
std::vector<std::string> forwardedIps;
if (!forwardedFor.empty())
boost::split(forwardedIps, forwardedFor, boost::is_any_of(","));
Utils::insert(ips, forwardedIps);
for (unsigned i = 0; i < ips.size(); ++i) {
result = ips[i];
boost::trim(result);
if (!result.empty()
&& !boost::starts_with(result, "10.")
&& !boost::starts_with(result, "172.16.")
&& !boost::starts_with(result, "192.168.")) {
break;
}
}
}
if (result.empty())
result = request.envValue("REMOTE_ADDR");
return result;
}
示例2: init
void WEnvironment::init(const WebRequest& request)
{
Configuration& conf = session_->controller()->configuration();
queryString_ = request.queryString();
parameters_ = request.getParameterMap();
urlScheme_ = request.urlScheme();
referer_ = request.headerValue("Referer");
accept_ = request.headerValue("Accept");
serverSignature_ = request.envValue("SERVER_SIGNATURE");
serverSoftware_ = request.envValue("SERVER_SOFTWARE");
serverAdmin_ = request.envValue("SERVER_ADMIN");
pathInfo_ = request.pathInfo();
#ifndef WT_TARGET_JAVA
sslInfo_ = request.sslInfo();
#endif
setUserAgent(request.headerValue("User-Agent"));
LOG_INFO("UserAgent: " << userAgent_);
/*
* Determine server host name
*/
if (conf.behindReverseProxy()) {
/*
* Take the last entry in X-Forwarded-Host, assuming that we are only
* behind 1 proxy
*/
std::string forwardedHost = request.headerValue("X-Forwarded-Host");
if (!forwardedHost.empty()) {
std::string::size_type i = forwardedHost.rfind(',');
if (i == std::string::npos)
host_ = forwardedHost;
else
host_ = forwardedHost.substr(i+1);
} else
host_ = request.headerValue("Host");
} else
host_ = request.headerValue("Host");
if (host_.empty()) {
/*
* HTTP 1.0 doesn't require it: guess from config
*/
host_ = request.serverName();
if (!request.serverPort().empty())
host_ += ":" + request.serverPort();
}
clientAddress_ = getClientAddress(request, conf);
std::string cookie = request.headerValue("Cookie");
doesCookies_ = !cookie.empty();
if (doesCookies_)
parseCookies(cookie, cookies_);
locale_ = request.parseLocale();
}
示例3: updateUrlScheme
void WEnvironment::updateUrlScheme(const WebRequest& request)
{
urlScheme_ = str(request.urlScheme());
Configuration& conf = session_->controller()->configuration();
#ifndef WT_TARGET_JAVA
if (conf.behindReverseProxy() || server()->dedicatedSessionProcess()) {
#else
if (conf.behindReverseProxy()){
#endif
std::string forwardedProto = str(request.headerValue("X-Forwarded-Proto"));
if (!forwardedProto.empty()) {
std::string::size_type i = forwardedProto.rfind(',');
if (i == std::string::npos)
urlScheme_ = forwardedProto;
else
urlScheme_ = forwardedProto.substr(i+1);
}
}
}
void WEnvironment::init(const WebRequest& request)
{
Configuration& conf = session_->controller()->configuration();
queryString_ = request.queryString();
parameters_ = request.getParameterMap();
host_ = str(request.headerValue("Host"));
referer_ = str(request.headerValue("Referer"));
accept_ = str(request.headerValue("Accept"));
serverSignature_ = str(request.envValue("SERVER_SIGNATURE"));
serverSoftware_ = str(request.envValue("SERVER_SOFTWARE"));
serverAdmin_ = str(request.envValue("SERVER_ADMIN"));
pathInfo_ = request.pathInfo();
#ifndef WT_TARGET_JAVA
if(!str(request.headerValue("Redirect-Secret")).empty())
session_->controller()->redirectSecret_ = str(request.headerValue("Redirect-Secret"));
sslInfo_ = request.sslInfo();
if(!sslInfo_ && !str(request.headerValue("SSL-Client-Certificates")).empty()) {
parseSSLInfo(str(request.headerValue("SSL-Client-Certificates")));
}
#endif
setUserAgent(str(request.headerValue("User-Agent")));
updateUrlScheme(request);
LOG_INFO("UserAgent: " << userAgent_);
/*
* If behind a reverse proxy, use external host, schema as communicated using 'X-Forwarded'
* headers.
*/
#ifndef WT_TARGET_JAVA
if (conf.behindReverseProxy() || server()->dedicatedSessionProcess()) {
#else
if (conf.behindReverseProxy()){
#endif
std::string forwardedHost = str(request.headerValue("X-Forwarded-Host"));
if (!forwardedHost.empty()) {
std::string::size_type i = forwardedHost.rfind(',');
if (i == std::string::npos)
host_ = forwardedHost;
else
host_ = forwardedHost.substr(i+1);
}
}
if (host_.empty()) {
/*
* HTTP 1.0 doesn't require it: guess from config
*/
host_ = request.serverName();
if (!request.serverPort().empty())
host_ += ":" + request.serverPort();
}
clientAddress_ = getClientAddress(request, conf);
const char *cookie = request.headerValue("Cookie");
doesCookies_ = cookie;
if (cookie)
parseCookies(cookie, cookies_);
locale_ = request.parseLocale();
}
#ifndef WT_TARGET_JAVA
void WEnvironment::parseSSLInfo(const std::string& json) {
#ifdef WT_WITH_SSL
Wt::Json::Object obj;
Wt::Json::ParseError error;
if(!Wt::Json::parse(Wt::Utils::base64Decode(json), obj, error)) {
LOG_ERROR("error while parsing client certificates");
//.........这里部分代码省略.........