Skip to content

Commit

Permalink
Allow foriegn origin URLs only of hosted viewers.
Browse files Browse the repository at this point in the history
  • Loading branch information
yurydelendik committed Jan 16, 2016
1 parent e29d85e commit 3ec39ea
Showing 1 changed file with 32 additions and 0 deletions.
32 changes: 32 additions & 0 deletions web/viewer.js
Expand Up @@ -1332,6 +1332,37 @@ window.PDFView = PDFViewerApplication; // obsolete name, using it as an alias
//})();
//#endif

//#if GENERIC
var HOSTED_VIEWER_ORIGINS = ['null',
'http://mozilla.github.io', 'https://mozilla.github.io'];
function validateFileURL(file) {
try {
var viewerOrigin = new URL(window.location.href).origin || 'null';
if (HOSTED_VIEWER_ORIGINS.indexOf(viewerOrigin) >= 0) {
// Hosted or local viewer, allow for any file locations
return;
}
var fileOrigin = new URL(file, window.location.href).origin;
// Removing of the following line will not guarantee that the viewer will
// start accepting URLs from foreign origin -- CORS headers on the remote
// server must be properly configured.
if (fileOrigin !== viewerOrigin) {
throw new Error('file origin does not match viewer\'s');
}
} catch (e) {
var message = e && e.message;
var loadingErrorMessage = mozL10n.get('loading_error', null,
'An error occurred while loading the PDF.');

var moreInfo = {
message: message
};
PDFViewerApplication.error(loadingErrorMessage, moreInfo);
throw e;
}
}
//#endif

function webViewerLoad(evt) {
//#if !PRODUCTION
require.config({paths: {'pdfjs': '../src'}});
Expand All @@ -1351,6 +1382,7 @@ function webViewerInitialized() {
var queryString = document.location.search.substring(1);
var params = parseQueryString(queryString);
var file = 'file' in params ? params.file : DEFAULT_URL;
validateFileURL(file);
//#endif
//#if (FIREFOX || MOZCENTRAL)
//var file = window.location.href.split('#')[0];
Expand Down

0 comments on commit 3ec39ea

Please sign in to comment.