diff --git a/src/raven.js b/src/raven.js index c9489f0a6e86..48055c362fa0 100644 --- a/src/raven.js +++ b/src/raven.js @@ -17,6 +17,7 @@ var _Raven = window.Raven, ignoreUrls: [], whitelistUrls: [], includePaths: [], + crossOrigin: 'anonymous', collectWindowErrors: true, tags: {}, maxMessageLength: 100, @@ -759,7 +760,10 @@ function makeRequest(data) { var img = newImage(), src = globalServer + authQueryString + '&sentry_data=' + encodeURIComponent(JSON.stringify(data)); - img.crossOrigin = 'anonymous'; + if (globalOptions.crossOrigin || globalOptions.crossOrigin === '') { + img.crossOrigin = globalOptions.crossOrigin; + } + img.onload = function success() { triggerEvent('success', { data: data, diff --git a/test/raven.test.js b/test/raven.test.js index 230d80ffdce6..8e7ce843314c 100644 --- a/test/raven.test.js +++ b/test/raven.test.js @@ -1081,16 +1081,48 @@ describe('globals', function() { }); describe('makeRequest', function() { + var imageCache; + + beforeEach(function () { + imageCache = []; + this.sinon.stub(window, 'newImage', function(){ var img = {}; imageCache.push(img); return img; }); + }) + it('should load an Image', function() { authQueryString = '?lol'; globalServer = 'http://localhost/'; - var imageCache = []; - this.sinon.stub(window, 'newImage', function(){ var img = {}; imageCache.push(img); return img; }); makeRequest({foo: 'bar'}); assert.equal(imageCache.length, 1); assert.equal(imageCache[0].src, 'http://localhost/?lol&sentry_data=%7B%22foo%22%3A%22bar%22%7D'); }); + + it('should populate crossOrigin based on globalOptions', function() { + globalOptions = { + crossOrigin: 'something' + }; + makeRequest({foo: 'bar'}); + assert.equal(imageCache.length, 1); + assert.equal(imageCache[0].crossOrigin, 'something'); + }); + + it('should populate crossOrigin if empty string', function() { + globalOptions = { + crossOrigin: '' + }; + makeRequest({foo: 'bar'}); + assert.equal(imageCache.length, 1); + assert.equal(imageCache[0].crossOrigin, ''); + }); + + it('should not populate crossOrigin if falsey', function() { + globalOptions = { + crossOrigin: false + }; + makeRequest({foo: 'bar'}); + assert.equal(imageCache.length, 1); + assert.isUndefined(imageCache[0].crossOrigin); + }); }); describe('handleStackInfo', function() {