diff --git a/src/app/core/metadata/metadata.service.spec.ts b/src/app/core/metadata/metadata.service.spec.ts
index b3404e84d5..9f3f782406 100644
--- a/src/app/core/metadata/metadata.service.spec.ts
+++ b/src/app/core/metadata/metadata.service.spec.ts
@@ -74,7 +74,7 @@ describe('MetadataService', () => {
}
} as any as Router;
hardRedirectService = jasmine.createSpyObj( {
- getRequestOrigin: 'https://request.org',
+ getCurrentOrigin: 'https://request.org',
});
// @ts-ignore
diff --git a/src/app/core/metadata/metadata.service.ts b/src/app/core/metadata/metadata.service.ts
index 10e37b4282..6f07ecbb06 100644
--- a/src/app/core/metadata/metadata.service.ts
+++ b/src/app/core/metadata/metadata.service.ts
@@ -272,7 +272,7 @@ export class MetadataService {
if (this.currentObject.value instanceof Item) {
let url = this.getMetaTagValue('dc.identifier.uri');
if (hasNoValue(url)) {
- url = new URLCombiner(this.hardRedirectService.getRequestOrigin(), this.router.url).toString();
+ url = new URLCombiner(this.hardRedirectService.getCurrentOrigin(), this.router.url).toString();
}
this.addMetaTag('citation_abstract_html_url', url);
}
@@ -336,7 +336,7 @@ export class MetadataService {
// Use the found link to set the tag
this.addMetaTag(
'citation_pdf_url',
- new URLCombiner(this.hardRedirectService.getRequestOrigin(), link).toString()
+ new URLCombiner(this.hardRedirectService.getCurrentOrigin(), link).toString()
);
});
}
diff --git a/src/app/core/services/browser-hard-redirect.service.spec.ts b/src/app/core/services/browser-hard-redirect.service.spec.ts
index d0fecd9be5..b9745906c3 100644
--- a/src/app/core/services/browser-hard-redirect.service.spec.ts
+++ b/src/app/core/services/browser-hard-redirect.service.spec.ts
@@ -2,7 +2,7 @@ import { TestBed } from '@angular/core/testing';
import { BrowserHardRedirectService } from './browser-hard-redirect.service';
describe('BrowserHardRedirectService', () => {
- const origin = 'test origin';
+ const origin = 'https://test-host.com:4000';
const mockLocation = {
href: undefined,
pathname: '/pathname',
@@ -43,7 +43,7 @@ describe('BrowserHardRedirectService', () => {
describe('when requesting the origin', () => {
it('should return the location origin', () => {
- expect(service.getRequestOrigin()).toEqual(origin);
+ expect(service.getCurrentOrigin()).toEqual(origin);
});
});
diff --git a/src/app/core/services/browser-hard-redirect.service.ts b/src/app/core/services/browser-hard-redirect.service.ts
index 5f90fb8dbd..eeb9006039 100644
--- a/src/app/core/services/browser-hard-redirect.service.ts
+++ b/src/app/core/services/browser-hard-redirect.service.ts
@@ -28,16 +28,20 @@ export class BrowserHardRedirectService extends HardRedirectService {
}
/**
- * Get the origin of a request
+ * Get the current route, with query params included
+ * e.g. /search?page=1&query=open%20access&f.dateIssued.min=1980&f.dateIssued.max=2020
*/
- getCurrentRoute() {
+ getCurrentRoute(): string {
return this.location.pathname + this.location.search;
}
/**
- * Get the hostname of the request
+ * Get the origin of the current URL
+ * i.e. "://" [ ":" ]
+ * e.g. if the URL is https://demo7.dspace.org/search?query=test,
+ * the origin would be https://demo7.dspace.org
*/
- getRequestOrigin() {
+ getCurrentOrigin(): string {
return this.location.origin;
}
}
diff --git a/src/app/core/services/hard-redirect.service.ts b/src/app/core/services/hard-redirect.service.ts
index 730101701f..3733059283 100644
--- a/src/app/core/services/hard-redirect.service.ts
+++ b/src/app/core/services/hard-redirect.service.ts
@@ -18,10 +18,13 @@ export abstract class HardRedirectService {
* Get the current route, with query params included
* e.g. /search?page=1&query=open%20access&f.dateIssued.min=1980&f.dateIssued.max=2020
*/
- abstract getCurrentRoute();
+ abstract getCurrentRoute(): string;
/**
- * Get the hostname of the request
+ * Get the origin of the current URL
+ * i.e. "://" [ ":" ]
+ * e.g. if the URL is https://demo7.dspace.org/search?query=test,
+ * the origin would be https://demo7.dspace.org
*/
- abstract getRequestOrigin();
+ abstract getCurrentOrigin(): string;
}
diff --git a/src/app/core/services/server-hard-redirect.service.spec.ts b/src/app/core/services/server-hard-redirect.service.spec.ts
index 892f4f4087..4501547b92 100644
--- a/src/app/core/services/server-hard-redirect.service.spec.ts
+++ b/src/app/core/services/server-hard-redirect.service.spec.ts
@@ -7,11 +7,12 @@ describe('ServerHardRedirectService', () => {
const mockResponse = jasmine.createSpyObj(['redirect', 'end']);
const service: ServerHardRedirectService = new ServerHardRedirectService(mockRequest, mockResponse);
- const origin = 'test-host';
+ const origin = 'https://test-host.com:4000';
beforeEach(() => {
+ mockRequest.protocol = 'https';
mockRequest.headers = {
- host: 'test-host',
+ host: 'test-host.com:4000',
};
TestBed.configureTestingModule({});
@@ -49,7 +50,7 @@ describe('ServerHardRedirectService', () => {
describe('when requesting the origin', () => {
it('should return the location origin', () => {
- expect(service.getRequestOrigin()).toEqual(origin);
+ expect(service.getCurrentOrigin()).toEqual(origin);
});
});
diff --git a/src/app/core/services/server-hard-redirect.service.ts b/src/app/core/services/server-hard-redirect.service.ts
index 65b404ca6c..94b9ed6198 100644
--- a/src/app/core/services/server-hard-redirect.service.ts
+++ b/src/app/core/services/server-hard-redirect.service.ts
@@ -55,16 +55,19 @@ export class ServerHardRedirectService extends HardRedirectService {
}
/**
- * Get the origin of a request
+ * Get the URL of the current route
*/
- getCurrentRoute() {
+ getCurrentRoute(): string {
return this.req.originalUrl;
}
/**
- * Get the hostname of the request
+ * Get the origin of the current URL
+ * i.e. "://" [ ":" ]
+ * e.g. if the URL is https://demo7.dspace.org/search?query=test,
+ * the origin would be https://demo7.dspace.org
*/
- getRequestOrigin() {
- return this.req.headers.host;
+ getCurrentOrigin(): string {
+ return this.req.protocol + '://' + this.req.headers.host;
}
}