in libcef/common/request_impl.cc [544:609]
void CefRequestImpl::Get(const cef::mojom::RequestParamsPtr& params,
blink::WebURLRequest& request) {
request.SetUrl(params->url);
request.SetRequestorOrigin(blink::WebSecurityOrigin::Create(params->url));
if (!params->method.empty())
request.SetHttpMethod(blink::WebString::FromASCII(params->method));
if (params->referrer && params->referrer->url.is_valid()) {
const blink::WebString& referrer =
blink::WebSecurityPolicy::GenerateReferrerHeader(
params->referrer->policy, params->url,
blink::WebString::FromUTF8(params->referrer->url.spec()));
if (!referrer.IsEmpty()) {
request.SetReferrerString(referrer);
request.SetReferrerPolicy(params->referrer->policy);
}
}
CefRequest::HeaderMap headerMap;
if (!params->headers.empty()) {
for (net::HttpUtil::HeadersIterator i(params->headers.begin(),
params->headers.end(), "\n\r");
i.GetNext();) {
request.AddHttpHeaderField(blink::WebString::FromUTF8(i.name()),
blink::WebString::FromUTF8(i.values()));
headerMap.insert(std::make_pair(i.name(), i.values()));
}
}
if (params->upload_data) {
const std::u16string& method = request.HttpMethod().Utf16();
if (method == u"GET" || method == u"HEAD") {
request.SetHttpMethod(blink::WebString::FromASCII("POST"));
}
// The comparison performed by httpHeaderField() is case insensitive.
if (request
.HttpHeaderField(blink::WebString::FromASCII(
net::HttpRequestHeaders::kContentType))
.length() == 0) {
request.SetHttpHeaderField(
blink::WebString::FromASCII(net::HttpRequestHeaders::kContentType),
blink::WebString::FromASCII(
net_service::kContentTypeApplicationFormURLEncoded));
}
request.SetHttpBody(
blink::GetWebHTTPBodyForRequestBody(*params->upload_data));
}
if (!params->site_for_cookies.IsNull())
request.SetSiteForCookies(params->site_for_cookies);
int flags = params->load_flags;
if (!(flags & kURCachePolicyMask)) {
// Only consider the Cache-Control directives when a cache policy is not
// explicitly set on the request.
flags |= GetCacheControlHeaderPolicy(headerMap);
}
request.SetCacheMode(GetFetchCacheMode(flags));
SETBOOLFLAG(request, params->load_flags, SetAllowStoredCredentials,
UR_FLAG_ALLOW_STORED_CREDENTIALS);
SETBOOLFLAG(request, params->load_flags, SetReportUploadProgress,
UR_FLAG_REPORT_UPLOAD_PROGRESS);
}