Skip to content

Commit

Permalink
fix($location): default to / for the url base if no base[href]
Browse files Browse the repository at this point in the history
With the recent refactoring of $location service we changed this behavior
resulting in a regression.

Previously we thought that html5 mode always required base[href]
to be set in order for urls to resolve properly. It turns out that
base[href] is problematic because it makes anchor urls (#foo) to
always resolve to the base url, which is almost always incorrect
and results in all anchors links and other anchor urls (e.g. svg
references) to be broken.

For this reason, we should now start recommending that people just
deploy to root context (/) and not set the base[href] when using
the html5 mode (push/pop history state).

If it's impossible to deploy to the root context then either all
urls in the app must be absolute or base[href] must be set with the
caveat that anchor urls in such app won't work.

Closes angular#2762
  • Loading branch information
IgorMinar authored and btford committed Aug 12, 2013
1 parent 06b0930 commit cbe31d8
Showing 1 changed file with 13 additions and 0 deletions.
13 changes: 13 additions & 0 deletions test/ng/locationSpec.js
Original file line number Diff line number Diff line change
Expand Up @@ -610,6 +610,19 @@ describe('$location', function() {
}
);
});


it('should set appBase to serverBase if base[href] is missing', function() {
initService(true, '!', true);
inject(
initBrowser('http://domain.com/my/view1#anchor1', ''),
function($rootScope, $location, $browser) {
expect($browser.url()).toBe('http://domain.com/my/view1#anchor1');
expect($location.path()).toBe('/my/view1');
expect($location.hash()).toBe('anchor1');
}
);
});
});


Expand Down

0 comments on commit cbe31d8

Please sign in to comment.