-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix(KUI-1369): noIndexMiddleware and noIndexMiddleware.test has been …
…added to make sure that URL with aap*. is not indexed by google
- Loading branch information
1 parent
ea131ef
commit 614440d
Showing
5 changed files
with
209 additions
and
3 deletions.
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
const { server: serverConfig } = require('../configuration') | ||
|
||
/** | ||
* Middleware that adds "noindex" robots header if "server host" and the request | ||
* host ("forwarded host") doesn't match. This is done to prevent Google from | ||
* indexing app.kth.se/* when we want the user to use www.kth.se/* | ||
* | ||
* The "server host" (SERVER_HOST_URL) is the primary host we expected the | ||
* app to be hosted on (ie https://www.kth.se). | ||
* | ||
* The orginal host of the request is replaced with an Azure host | ||
* (*.azurewebsites.net) before reaching our app so we look at the "forwarded | ||
* host" ("x-forwarded-host" header) . | ||
* | ||
* Default, if x-forwarded-host is missing, is to do nothing. | ||
*/ | ||
const noIndexMiddleware = function (req, res, next) { | ||
const forwardedHost = req.header('x-forwarded-host') | ||
if (forwardedHost) { | ||
const serverHostUrl = new URL(serverConfig.hostUrl) | ||
const serverHost = serverHostUrl.host | ||
if (serverHost !== forwardedHost) { | ||
res.set('x-robots-tag', 'noindex') | ||
} | ||
} | ||
next() | ||
} | ||
module.exports = noIndexMiddleware |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
const httpMocks = require('node-mocks-http') | ||
|
||
const noIndexMiddleware = require('./noIndexMiddleware') | ||
|
||
const mockedServerHost = 'mockedserverhost.example.com' | ||
jest.mock('../configuration', () => ({ | ||
server: { hostUrl: 'https://mockedserverhost.example.com' }, | ||
})) | ||
|
||
describe('noIndexMiddleware', () => { | ||
it('should not set "X-Robots-Tag" header if "X-Forwarded-Host" is missing', () => { | ||
const next = jest.fn() | ||
const { req, res } = httpMocks.createMocks({ | ||
headers: {}, | ||
}) | ||
|
||
noIndexMiddleware(req, res, next) | ||
|
||
expect(res.getHeader('X-Robots-Tag')).toBeUndefined() | ||
expect(next).toHaveBeenCalledTimes(1) | ||
}) | ||
|
||
it('should not set "X-Robots-Tag" header if "X-Forwarded-Host" match SERVER_HOST_URL', () => { | ||
const next = jest.fn() | ||
const { req, res } = httpMocks.createMocks({ | ||
headers: { | ||
'X-Forwarded-Host': mockedServerHost, | ||
}, | ||
}) | ||
|
||
noIndexMiddleware(req, res, next) | ||
|
||
expect(res.getHeader('X-Robots-Tag')).toBeUndefined() | ||
expect(next).toHaveBeenCalledTimes(1) | ||
}) | ||
|
||
it('should set "X-Robots-Tag" header if "X-Forwarded-Host" does not match SERVER_HOST_URL', () => { | ||
const next = jest.fn() | ||
const { req, res } = httpMocks.createMocks({ | ||
headers: { | ||
'X-Forwarded-Host': 'anotherhost.example.com', | ||
}, | ||
}) | ||
|
||
noIndexMiddleware(req, res, next) | ||
|
||
expect(res.getHeader('X-Robots-Tag')).toBe('noindex') | ||
expect(next).toHaveBeenCalledTimes(1) | ||
}) | ||
}) |