This repository was archived by the owner on Nov 20, 2018. It is now read-only.
This repository was archived by the owner on Nov 20, 2018. It is now read-only.
PathString over-encodes #660
Closed
Description
Ported from https://katanaproject.codeplex.com/workitem/462
"The resource path delimiters "(" and ")" are encoded which violates RFC 3986. Please see section 3.3. This breaks a lot of OData clients that rely on a specific URL convention. The offending code can be found in Microsoft.Owin.PathString:ToUriComponent().
http://services.odata.org/OData/OData.svc/GetProductsByCategoryId(categoryId=2)
is encoded as
http://services.odata.org/OData/OData.svc/GetProductsByCategoryId%28categoryId=2%29
which is incorrect."
AspNetCore uses a different encoder, but it likely has similar behaviors here.
https://github.com/aspnet/HttpAbstractions/blob/dev/src/Microsoft.AspNetCore.Http.Abstractions/PathString.cs#L67
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
/ "*" / "+" / "," / ";" / "="
pct-encoded = "%" HEXDIG HEXDIG
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"