I am building an small client-side application that is deployed on a website built with a WYSIWYG CMS. (Unfortunately, I do not have access to the server).
I am saving the app's state in the URL with a hash-bang, and would like to shorten it using something like TinyURL's create API. Essentially, I would like to query a 3rd party service with my long URL as the request, and receive a response with a shortened one.
My issue is that I don't know how to do this without recieving a CORS error message:
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://www.site-im-working-on.com' is therefore not allowed access.
Here is an example of what I have been trying to do (using jQuery):
var tinyAPI = 'http://tinyurl.com/api-create.php?url='; function getTinyURL () { var longURL = window.location.href; var request = tinyAPI + longURL; return $.get( request, function (response) { return response; }); } // get tiny URL when on user action $('.share-button').on('click', function () { var tinyURL = tinyURL(); // insert string into DOM element // copy string to user's clipboard // etc... });
Is there any way to get around CORS using only client-side code?
(I am also open to using another URL shortener with a free API.)
Since you've stated you are open to using another API, Google has a JavaScript API that allows you to shorten a URL using their goo.gl URL shorter service.
I've adapted an example from Github below:
To use the above code you'll need to get an API key from the Google Developers Console