-
Notifications
You must be signed in to change notification settings - Fork 27.4k
encodeUriSegment in resource encodes params, should be optional #1388
Comments
Created a gist with the changes for hijacking :) https://gist.github.com/3749345 |
+1 to this. Provides greater flexibility. In our use case, we are using spring data rest for the backend and search methods are path params that we need to map to actions, ideally in the same resource object as for the basic CRUD ops. |
+1. Our ids contain slashes (we use RavenDB) and it would be a clean solution if it wasn't encoded |
Making it optional is fine but please insure that it's enabled by default. It is ill advised to not encode URIs. Not doing so might seem "clean" now but I assure you it will bite you in the ass in this life or the next. |
If I read http://www.ietf.org/rfc/rfc3986.txt correctly, we should be allowed the unencoded slash for the fragment.
Use case: |
I'm just curious, is it possible to avoid this issue by double-encoding your params? |
Sorry, it then makes it even worse. Just to confirm I tried out a number of opens even though it felt futile! '/', '%252F' --> %25252F Also, / %2f --> %252F Thanks for the thought. Request still stands. |
Ran into this today. +1 |
+1 |
5 similar comments
+1 |
+1 |
+1 |
+1 |
+1 |
I see mention of a database (RavenDB) that makes the current implementation problematic, but I'd expect there to be an intermediary server that expects encoded components, and decodes them to the correct ID on the backend. Could someone provide a more concrete use case on where forced encoding is causing problems (sorry I don't have more context on RavenDB)? We hesitate to allow this with the current design of $resource, because it'd make it to easy for user input to affect the path of a request. |
I use $location for a REST/hypermedia design and not RavenDB (or $resource). I have had to work with a patched version of the library. I am also seeking confirmation that in fact this proposal does actually follow the RFC too -see my comment above I might also be a bit rusty around the library - so big apologies if I am wrong - there are also two implementations of one in resource at L332 and one in Angular at 1071. I just need the one in Angular because it is what is used by $location ;-) (yes, I see the problem here so I wouldn't suggest haven't different implementations). Apologies if I have any incorrect analysis. |
+1 |
Is there any movement on this? |
hey there, i've the same problem but the gist doesn't make it work for me. where do i have to place this encodeUirSegment method or where can i place this option? :/ |
I was using an HTTP interceptor to transform URLs. It was working until I tested on IE11. Angular breaks on XHR requests to URLs including Guess I'm going back to the modified ngResource.. |
@connorbode --- dude, like it was mentioned in your issue, write a failing test case =) This path SHOULD already be covered, so there's two possibilities, either it's not covered and should be, or you're doing something to break this. Lets find out which it is! |
+1 |
2 similar comments
+1 |
+1 |
+1 |
4 similar comments
+1 |
+1 |
+1 |
+1 |
You can use the same syntaxe like in the ui-router lib : |
+1 it also happens in location |
👍 |
1 similar comment
+1 |
I'm current doing a decode in order to send my original url to backend .factory('decodeUriSegment', () => {
return (url) => {
return url.replace(/@/g, '%40')
.replace(/:/g, '%3A')
.replace(/\$/g, '%24')
.replace(/,/g, '%2C')
.replace(/\+/g, '%20');
};
}); |
+1 |
1 similar comment
+1 |
|
+1 |
i'm getting this error in angularjs $resource service |
@ibrahim89, make sure you use the same version of angular and angular-resource. |
@gkalpak, thank you !! |
my error is solved |
When having a $resource and sending a param to be used in the url, it would be nice if there was an option not to encode it. OOB it encodes (in this case the "path") param before it's match agains the url. For example
This will result in a call to url "/game%2Fmygame.json" instead of "/game/mygame.json".
There's a quick-fix-workaround:
I have no idea what will break, but as of know it works for me. One could also hijack the actions argument in ResourceFactory and pass a skip encode flag to the Route constructor's defaults argument to tell it to skip the encoding.
The text was updated successfully, but these errors were encountered: