Thursday, July 31, 2014

Using YQL servers as proxy to load resources cross domain

To load a HTML5 file from another domain use this query.

select * from html where url="" and compat="html5" and xpath='*'

This will return the whole HTML page in the results tag of the generated XML. If you want to use JSONP just add a "callback=[funcName]" query parameter in the end and instead of an XML a JSON will be sent out. Here is an example of how it will be sent out. I am using callback function as "test". Depending on which framework or library you are using you will need to set it accordingly.

Also the YQL servers support CORS so it won't be that difficult if you do a direct XHR to get the file instead of using script tags for JSONP. I also tested it using text files and they can also be downloaded using this method.

If you want other types of resources which are less than 25KB you can use another YQL query to get the results.

select * from data.uri where url=""

This only works for resources which are less than 25KB. But here it could be an image or any other resource and it will work.