Comments (4)
Why does Rails assume parameters before charset to belong to the media type, but parameters after charset to not belong to it?
Considering the simplicity or naivety of the existing parser, probably oversight.
While trying to fix this issue, the special handling of charset everywhere made it impossible to fix the issue for me without breaking changes.
Breaking changes are sometimes necessary.
from rails.
In HTTP headers, including the Content-Type
header, parameters generally follow the parameter=value
format. However, certain scenarios and non-standard or experimental use cases might involve parameters without explicit values. One such example is the fragment
parameter.
Understanding the fragment
Parameter
The fragment
parameter is part of the multipart/byteranges
content type. It’s used to indicate that a particular part of a multipart message represents a fragment of a larger resource.
Why Parameters Might Not Have Values
-
Implicit Values:
- Some parameters are designed to convey information implicitly by their presence alone. Their mere inclusion indicates a specific condition or behavior, so an explicit value is unnecessary.
-
Non-Standard Extensions:
- In non-standard or experimental extensions, parameters might be used creatively, sometimes without values, to trigger specific behaviors in custom implementations.
-
Backward Compatibility:
- Certain legacy systems or protocols might define parameters without values for backward compatibility or for simplicity in parsing.
Example: fragment
Parameter
In the context of multipart/byteranges
, the fragment
parameter can be used to indicate a fragment of a resource:
Content-Type: multipart/byteranges; boundary=boundary1; fragment
Here’s why the fragment
parameter might not have an explicit value:
-
Semantic Meaning:
- The presence of the
fragment
parameter alone conveys that the parts in themultipart
message are fragments of a larger resource. There is no additional value needed to convey this meaning.
- The presence of the
-
Specification Simplicity:
- Simplifies the specification and implementation by not requiring an explicit value. This reduces the complexity of parsing and processing.
Conclusion
While the standard practice for HTTP header parameters is to use the parameter=value
format, there are valid reasons for parameters to exist without explicit values, such as conveying implicit information, maintaining simplicity, or adhering to specific use cases like the fragment
parameter in multipart/byteranges
. The presence of such parameters alone is enough to provide the necessary context or behavior expected by the client or server handling the HTTP message.
from rails.
Thanks for the clarification! Once the confusion with parameter orders is resolved, I can try updating my branch with a fix.
from rails.
I was checking the code and noticed that the original code was written by @kamipo, so I'm curious if that was intentional or an oversight? @kamipo, would you mind giving a quick look?
from rails.
Related Issues (20)
- new_framework_defaults initializer for Rails 7.1 not setting ActiveRecord.run_after_transaction_callbacks_in_order_defined
- [Feature Request][CSP] Support for multiple Content Security Policies HOT 2
- ActionCable: Invalid channel causes repeated subscription attempts
- Code generation memory bloat post alias fix HOT 8
- Rails throws an error when sending invalid UTF-8 query param HOT 1
- Lazy default_scope evaluation in joined models loses original context
- Some Rails integration tests break with rack 3.1 HOT 4
- ActionText Editor Previews uploaded pre 7.1.3.4 are broken in 7.1.3.4 after a resave HOT 9
- Inversion of associations with :through don't work until it's saved
- Incorrect `has_many through` load with custom association name and custom keys type
- Demo video on home page doesn't work as demo'd HOT 1
- Infinite loop passing form_builder in partial as local after update to 7.1.3.4 (was 7.0.8.4) HOT 11
- [ActiveRecord] alias_attribute does not work on methods defined in the superclass HOT 3
- Actionview: ArgumentError "Invalid formats" exception with empty invalid_values when additional format gets added after update to Rails 7.1.3.4 HOT 1
- Add a dummy encryption key for ActiveRecord::Encryption
- Empty scaffolding fails rubocop
- Docker Compose file with unusual indentation HOT 1
- ActiveRecord throwing structural incompatibility error if `merge` used for nested joins HOT 2
- Cannot use `root` for two different subdomains
- Safari 17.5-18 IOs TypeError undefined is not a constructor (evaluating 'new o.WebSocket(this.consumer.url,e)') HOT 1
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 rails.