diff --git a/examples/js-console/src/main/webapp/index.html b/examples/js-console/src/main/webapp/index.html
index afb2811..4e3c803 100644
--- a/examples/js-console/src/main/webapp/index.html
+++ b/examples/js-console/src/main/webapp/index.html
@@ -1,6 +1,6 @@
<html>
<head>
- <script src="//localhost:8080/auth/js/keycloak.js"></script>
+ <script src="/auth/js/keycloak.js"></script>
</head>
<body>
diff --git a/integration/js/src/main/resources/keycloak.js b/integration/js/src/main/resources/keycloak.js
index 445bca3..964509f 100755
--- a/integration/js/src/main/resources/keycloak.js
+++ b/integration/js/src/main/resources/keycloak.js
@@ -54,7 +54,7 @@
var callback = parseCallback(window.location.search);
if (callback) {
- window.history.replaceState({}, null, location.protocol + '//' + location.host + location.pathname + (callback.fragment ? '#' + callback.fragment : ''));
+ window.history.replaceState({}, null, callback.newUrl);
processCallback(callback, initPromise);
return;
} else if (initOptions) {
@@ -117,11 +117,7 @@
var redirectUri = adapter.redirectUri(options);
if (options && options.prompt) {
- if (redirectUri.indexOf('?') == -1) {
- redirectUri += '?prompt=' + options.prompt;
- } else {
- redirectUri += '&prompt=' + options.prompt;
- }
+ redirectUri += (redirectUri.indexOf('?') == -1 ? '?' : '&') + 'prompt=' + options.prompt;
}
sessionStorage.oauthState = state;
@@ -516,6 +512,7 @@
if (url.indexOf('?') != -1) {
var oauth = {};
+ oauth.newUrl = url.split('?')[0];
var params = url.split('?')[1].split('&');
for (var i = 0; i < params.length; i++) {
var p = params[i].split('=');
@@ -535,11 +532,18 @@
case 'prompt':
oauth.prompt = p[1];
break;
+ default:
+ oauth.newUrl += (oauth.newUrl.indexOf('?') == -1 ? '?' : '&') + p[0] + '=' + p[1];
}
}
if ((oauth.code || oauth.error) && oauth.state && oauth.state == sessionStorage.oauthState) {
delete sessionStorage.oauthState;
+
+ if (oauth.fragment) {
+ oauth.newUrl += '#' + oauth.fragment;
+ }
+
return oauth;
}
}
@@ -684,11 +688,11 @@
} else if (kc.redirectUri) {
return kc.redirectUri;
} else {
- var url = (location.protocol + '//' + location.hostname + (location.port && (':' + location.port)) + location.pathname);
+ var redirectUri = location.href.substring(0, location.href.indexOf('#'));
if (location.hash) {
- url += '?redirect_fragment=' + encodeURIComponent(location.hash.substring(1));
+ redirectUri += (redirectUri.indexOf('?') == -1 ? '?' : '&') + 'redirect_fragment=' + encodeURIComponent(location.hash.substring(1));
}
- return url;
+ return redirectUri;
}
}
};