Comments (6)
Thank you for you response! We'll work around on that
from http4k.
I think this will be due to the change made to the jetty backend which splits headers with quotes in them:
#1023
from http4k.
Ah, ok. I see.
Then, is this the desired behaviour? I understand that the issue with loosing quotes has been fixed.
from http4k.
@beleagaalexandra can you please provide a snippet creating a Request
object with the problematic data (setting the header with your expected quotes/escaping) so we can write a test for it?
from http4k.
In order to intercept the incoming requests, we have a routing http handler and we are also using a filter for parsing the header, but when getting to the parser in the filter, the header is already split.
typealias CustomControl = Map<String, JsonNode>
private object CustomControlHolder : RequestScoped<CustomControl>()
private val mapper = jacksonObjectMapper().configure(JsonParser.Feature.INCLUDE_SOURCE_IN_LOCATION, true)
object CaptureCustomControlHeaderFilter {
private fun parse(json: String): CustomControl? =
try {
val node = mapper.readTree(json)
node.fields().asSequence().associate { (k, v) -> k to v }
} catch (e: JsonParseException) {
null
}
private val customControlHeader = Header.map(::parse).optional("xxx-Header")
operator fun invoke(): Filter = Filter { next ->
{ request ->
try {
val customControl = customControlHeader(request)
if (customControl != null) {
CustomControlHolder.add(customControl)
}
next(request)
} finally {
CustomControlHolder.clear()
}
}
}
}
from http4k.
@beleagaalexandra we can confirm that this behaviour changed from Jetty 11 to 12.
Unfortunately, that splitting happens before http4k is involved, so your options here are either downgrade to jetty11 (by switching to the http4k-server-jetty11
module) or switch to another server implementation.
from http4k.
Related Issues (20)
- Jackson does not honour serialisation of Enums when they are used as Map keys HOT 1
- Support multi value query parameters in ApiGatewayV2LambdaFunction (http4k-serverless/lambda)
- Documentation error? - Lambda version HOT 2
- For a request with matching if-none-match header the response lacks the etag header HOT 1
- Header values in quotes lose their quotes HOT 2
- Client code works with OkHttp, fails with Java HTTP HOT 1
- Maven POM for http4k-format-jackson-xml is invalid: jackson-dataformat-xml is missing a version HOT 1
- Deserialisation exception from GraphQLResponse.from
- OpenApi 3 schema generation is flawed for Maps HOT 5
- Java8HttpClient causes SignatureDoesNotMatch exception on S3Bucket.copyObject() request HOT 11
- Support WsHandler symmetry HOT 1
- Http4kWebDriver does not work on Windows due to path issues. HOT 3
- Add BiDiLensSpec defaulted with factory method HOT 5
- Error when parsing AWS lambda event from S3 bucket HOT 3
- Servirtium fails to respond with correct headers when using Apollo Kotlin and large response HOT 8
- Support gzip on clients by default / clearly describe that it's missing and include in examples HOT 3
- Opentelemetry Baggage header not propagating as expecting HOT 4
- Route name without a beginning / works for everything except static resources HOT 4
- Skip cors headers if domain not matching
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 http4k.