Releases
3.0.0
Compare
Sorry, something went wrong.
No results found
Added
Add DiagnosticValue::escape() to escape controls and malformed UTF-8 in diagnostics
Add GuzzleHttp\Psr7\Exception\TimeoutException for timed-out stream operations
Add GuzzleHttp\Psr7\Utils::redactUserInfoInString() to redact the userinfo of a raw URI string within text
Promote GuzzleHttp\Psr7\Rfc3986 to public API with isValid*() predicates and canonicalizeIpv6()
Add GuzzleHttp\Psr7\UriNormalizer::CANONICALIZE_IPV6_HOST to PRESERVING_NORMALIZATIONS
Changed
Require psr/http-message:^2.0 and add native parameter and return types
Require psr/http-factory:^1.1
Reject native PHP serialization of stream implementations
Preserve request method casing, except ServerRequest::fromGlobals() still uppercases
Reject empty arrays and non-string values as header values
Reject invalid uploaded file trees and invalid parsed body values
Reject uploaded file specs missing tmp_name, size, or error
Reject non-integer and negative uploaded file error values
Reject invalid stream/upload sizes, buffer high-water marks, and dropping-stream limits
Rewind seekable uploaded-file streams before copying in UploadedFile::moveTo()
Reject negative read() lengths across all stream implementations
Detect the + flag anywhere in a mode for Stream::isReadable()/isWritable()
Reject empty strings returned by PumpStream source callables
Discard buffered bytes on PumpStream close and detach
Restore the original stream position after Message::bodySummary()
Allow null for the Message::bodySummary() truncation length to use the default
Validate LimitStream offset/limit and track non-seekable offset by bytes skipped
Make FnStream close and detach terminal, calling close callbacks at most once
Suppress exceptions from FnStream close callbacks during destructor cleanup
Make CachingStream::close() idempotent, preserving remote cleanup after detach
Do not move the CachingStream cursor when a SEEK_END target on an unknown-size stream is rejected
Normalize multiple leading slashes in Uri::getPath() and origin-form request targets
Serialize authority-less file URIs with rootless paths without the // separator
Serialize authority-less file URIs with empty paths as file: instead of the unparseable file://
Remove dot segments above the root per RFC 3986, prefixing authority-less // paths with /.
Return a network-path reference from UriResolver::relativize() when an empty-path target requires one
Stop returning an empty reference from UriResolver::relativize() when it would inherit the base fragment
Stop throwing from UriResolver::relativize() when an equal-path target's last path segment contains a colon
Harden URI host validation (delimiters, backslashes, IPv6, embedded ports); require schemes to start with a letter
Validate Uri::fromParts() ports instead of casting them
Treat ports 80 and 443 as defaults for the ws and wss schemes
Use the ws and wss default ports in UriComparator::isCrossOrigin() port comparisons
Redact all non-empty URI userinfo in Utils::redactUserInfo()
Rebuild server request URIs from $_SERVER by REQUEST_METHOD, using target authority before SERVER_PORT
Remove userinfo from absolute-form REQUEST_URI targets in ServerRequest::fromGlobals()
Reject zero-port HTTP_HOST and malformed SERVER_PORT in ServerRequest::getUriFromGlobals()
Reject malformed REQUEST_METHOD and SERVER_PROTOCOL server values in ServerRequest::fromGlobals()
Reject zero-port Host and normalize leading-zero ports in Message::parseRequest()
Reject duplicate Host headers and validate present values for all request-target forms
Reject zero-port, hostless, and userinfo absolute-form request targets in Message::parseRequest()
Synchronize the Host header in Request::withUri() when the URI changes or Host is empty
Include the URI port in Host headers synthesized by Message::toString()
Validate the Host header synthesized by Message::toString() from the request URI
Include non-default URI ports in Host headers set by Utils::modifyRequest() URI changes
Accept OPTIONS * and CONNECT authority-form request targets in Message::parseRequest()
Hide credential-bearing URI, server, and cookie arguments in stack traces on PHP 8.2+
Reject malformed HTTP request/response start-lines
Unfold obsolete HTTP/1.0 line folding for all valid request method tokens
Reject empty and control-character request targets in Request::withRequestTarget()
Validate iterator chunks passed to Utils::streamFor()
Validate unsupported values passed to Query::build()
Reject non-finite float values in Query::build() and MultipartStream contents
Reject non-finite float values in iterator chunks passed to Utils::streamFor()
Utils::streamFor() now rejects non-string scalar bodies
Uri::withQueryValues() now rejects non-string values
Reject invalid Utils::modifyRequest() change values
Use PHP debug type names in type error messages
Changed Utils::copyToStream() to throw when destination streams cannot make progress
Throw TimeoutException from Stream read/write and Utils copy/hash/readLine on stream timeouts
Throw TimeoutException from AppendStream::read(), CachingStream::read(), and Utils::tryGetContents() on stream timeouts
Re-throw TimeoutException from InflateStream when the decoded source stream times out
Close the compressed source stream from InflateStream::close()
Return the number of bytes copied from Utils::copyToStream()
Throw OverflowException when stream byte counts or offsets exceed PHP_INT_MAX
Translate StreamWrapper runtime failures to PHP stream failure values
Stop adding default Content-Length to multipart/form-data parts (RFC 7578 §4.8)
Escape multipart Content-Disposition parameters and reject unsafe boundaries and part headers
Preserve trailing whitespace in custom MultipartStream part header values
Preserve explicit custom MultipartStream boundary '0' instead of replacing it with a generated boundary
Made static utility classes non-instantiable
Validate bracketed IP-literal hosts consistently between parsing and withHost(), including userinfo forms
Percent-encode raw control bytes in userinfo before bracketed IP-literal hosts instead of parsing mutated values
Reject invalid UTF-8 and preserve percent-sequences in userinfo before bracketed IP-literal hosts
Normalize percent-encoded octets in the URI host to uppercase hex
Canonicalize IPv6 hosts to RFC 5952 form in Uri construction, fromParts(), and withHost()
Canonicalize bracketed IPv6 hosts in UriComparator::isCrossOrigin()
Reject malformed percent-sequences and percent-encoded bytes forbidden by the URI host policy
Extend CAPITALIZE_PERCENT_ENCODING and DECODE_UNRESERVED_CHARACTERS to userinfo and host
Trim header list elements with only spaces, horizontal tabs, and line terminators in Header::splitList()
Report header parameter PCRE failures explicitly in Header::parse()
Escape controls and malformed UTF-8 consistently in generated exception messages
Removed
Dropped support for PHP 7.2 and 7.3
Removed the ralouphie/getallheaders dependency
Removed deprecated Header::normalize() method
You can’t perform that action at this time.