private function addExpectHeader(RequestInterface $request, StreamInterface $body) { // Determine if the Expect header should be used if ($request->hasHeader('Expect')) { return; } $expect = $request->getConfig()['expect']; // Return if disabled or if you're not using HTTP/1.1 if ($expect === false || $request->getProtocolVersion() !== '1.1') { return; } // The expect header is unconditionally enabled if ($expect === true) { $request->setHeader('Expect', '100-Continue'); return; } // By default, send the expect header when the payload is > 1mb if ($expect === null) { $expect = 1048576; } // Always add if the body cannot be rewound, the size cannot be // determined, or the size is greater than the cutoff threshold $size = $body->getSize(); if ($size === null || $size >= (int) $expect || !$body->isSeekable()) { $request->setHeader('Expect', '100-Continue'); } }
/** * Applies request headers to a request based on the POST state * * @param RequestInterface $request Request to update */ public function applyRequestHeaders(RequestInterface $request) { if ($this->files || $this->forceMultipart) { $request->setHeader('Content-Type', 'multipart/form-data; boundary=' . $this->getBody()->getBoundary()); } elseif ($this->fields && !$request->hasHeader('Content-Type')) { $request->setHeader('Content-Type', 'application/x-www-form-urlencoded'); } if ($size = $this->getSize()) { $request->setHeader('Content-Length', $size); } }