Comments (3)
One important consideration: PSR-7 packages are about abstracting HTTP messaging, so that needs to be considered upfront.
I'm fine with the proposal, just throwing in this data point.
from laminas-diactoros.
My takes:
- PSR-7 very explicitly states: "UriInterface models HTTP and HTTPS URIs as specified in RFC 3986 (the primary use case)". When developing PSR-7, there was some discussion about modeling any URI, and we chose NOT to do this, as there are a number of URIs that are formed quite differently; many would NOT work in an HTTP context. The consensus was that something targeting all of RFC 3986 would need a separate PSR, and that most likely if we abstracted only HTTP/HTTPS URIs, it could likely later extend such a PSR and still retain compatibility with PSR-7.
- Technically, if other PSR-7 implementations are supporting anything other than HTTP/HTTPS in their
UriInterface
implementations, they are deviating. - All that said, I have no problem with changing this, but we need to be careful to note that our implementation does NOT cover all of RFC 3986, and that it's potentially possible to obtain and/or construct a URI that cannot be used within your application.
from laminas-diactoros.
After some more thoughts (including the knowledge I've gathered from Marcos and Matthews comments), I decided to tackle the underlying issue in mezzio-cors
.
To summarize:
- diactoros does follow PSR-7 specs
- diactoros does not allow more than HTTP/HTTPS and is not required to do so (as per PSR-7 spec)
- PSR-7 spec allows other schemes than HTTP/HTTPS but also states that implementation MAY NOT implement that
- PSR-7 spec actually states that
RequestInterface#withScheme
may throwInvalidArgumentException
for unsupported schemes
Thanks for the feedback here and in Slack.
from laminas-diactoros.
Related Issues (20)
- `FilterUsingXForwardedHeaders` should correctly deal with `<host>:<port>` pair in `X-FORWARDED-HOST` header HOT 9
- [RFC]: Allow better constraint handling for PHP HOT 2
- Could ServerRequestFactory::marshallUriFromSapi() be made public? HOT 4
- Update to PSR-7 1.1/2.0 HOT 2
- Remove image stream compatibility from `Stream`
- CVE-2023-29530: Fix For PHP 7.4 HOT 16
- CLI command to register diactoros as pinned for `php-http/discovery`
- Drop deprecated function marshalUriFromSapi
- PhpInputStream::getContent() inconsistency HOT 9
- RFC: Read php input stream content into php temp stream to allow all stream features in PhpInputStream HOT 1
- Numeric header names handling in PSR-7 message objects
- V3 getBody()->getContents() no longer returns full stream on second call HOT 3
- `composer.json` provides non-existing versions of `psr/http-factory`
- security vonerability HOT 1
- Plus signs in cookie data get converted to space.
- marshal_headers_from_sapi.php line 29 HOT 2
- `Uri::__toString()` can yield malformed URIs HOT 2
- 2.x series does not support PHP 8.3 HOT 20
- Malformed request causes 500 response HOT 7
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from laminas-diactoros.