diff options
| -rw-r--r-- | src/ng/http.js | 4 | ||||
| -rw-r--r-- | test/ng/httpSpec.js | 13 | ||||
| -rw-r--r-- | test/ngResource/resourceSpec.js | 4 | 
3 files changed, 15 insertions, 6 deletions
diff --git a/src/ng/http.js b/src/ng/http.js index 65d2ee5d..4288e7c1 100644 --- a/src/ng/http.js +++ b/src/ng/http.js @@ -818,8 +818,8 @@ function $HttpProvider() {                if (isObject(v)) {                  v = toJson(v);                } -              parts.push(encodeURIComponent(key) + '=' + -                         encodeURIComponent(v)); +              parts.push(encodeUriQuery(key) + '=' + +                         encodeUriQuery(v));              });            });            return url + ((url.indexOf('?') == -1) ? '?' : '&') + parts.join('&'); diff --git a/test/ng/httpSpec.js b/test/ng/httpSpec.js index 3b4905f9..600a6a2e 100644 --- a/test/ng/httpSpec.js +++ b/test/ng/httpSpec.js @@ -144,7 +144,7 @@ describe('$http', function() {        it('should jsonify objects in params map', inject(function($httpBackend, $http) { -        $httpBackend.expect('GET', '/url?a=1&b=%7B%22c%22%3A3%7D').respond(''); +        $httpBackend.expect('GET', '/url?a=1&b=%7B%22c%22:3%7D').respond('');          $http({url: '/url', params: {a:1, b:{c:3}}, method: 'GET'});        })); @@ -153,6 +153,17 @@ describe('$http', function() {            $httpBackend.expect('GET', '/url?a=1&a=2&a=3').respond('');            $http({url: '/url', params: {a: [1,2,3]}, method: 'GET'});        })); + + +      it('should not encode @ in url params', function() { +        //encodeURIComponent is too agressive and doesn't follow http://www.ietf.org/rfc/rfc3986.txt +        //with regards to the character set (pchar) allowed in path segments +        //so we need this test to make sure that we don't over-encode the params and break stuff +        //like buzz api which uses @self + +        $httpBackend.expect('GET', '/Path?!do%26h=g%3Da+h&:bar=$baz@1').respond(''); +        $http({url: '/Path', params: {':bar': '$baz@1', '!do&h': 'g=a h'}, method: 'GET'}); +      });      }); diff --git a/test/ngResource/resourceSpec.js b/test/ngResource/resourceSpec.js index db6fd402..3f2df284 100644 --- a/test/ngResource/resourceSpec.js +++ b/test/ngResource/resourceSpec.js @@ -118,9 +118,7 @@ describe("resource", function() {    }); -  // In order to get this passed, we need to fix $http - another breaking change, -  // so I'm gonna submit that as a separate CL. -  xit('should not encode @ in url params', function() { +  it('should not encode @ in url params', function() {     //encodeURIComponent is too agressive and doesn't follow http://www.ietf.org/rfc/rfc3986.txt     //with regards to the character set (pchar) allowed in path segments     //so we need this test to make sure that we don't over-encode the params and break stuff like  | 
