Engineering and Developers Blog
What's happening with engineering and developers at YouTube
Unlocking JavaScript’s Potential with CORS
Friday, May 18, 2012
Web developers are accustomed to making magical user experiences with a few lines of elegant JavaScript, but when faced with talking to
RESTful
services like the YouTube API, the options have been anything but simple. The most common approach relies on a technique known as
JSONP
, which relied on dynamically inserting a
<script>
tag on a page and triggering a local callback function with response from an external service. The YouTube API has
supported
JSONP for a while now, but developers using this approach are probably familiar with its drawbacks: request failures can lead to the JavaScript callback never being triggered, and JSONP can only be used for read-only API calls that don’t require HTTP request headers being set.
A modern alternative to JSONP is
Cross-Origin Resource Sharing
(CORS), which allows JavaScript developers to make arbitrary HTTP requests (
GET
s,
PUT
s,
POST
s, etc.) via the standard
XMLHttpRequest
interface. Not every browser supports the extensions to XMLHttpRequest that support CORS, but if you’re
using one that does
we have some good news for you: the
gdata.youtube.com
web servers that host the YouTube Data API now are enabled for CORS support!
This opens up a whole new class of web application integration with YouTube done purely in client-side JavaScript, without any need for running server-side code. To illustrate what’s now possible, take a look at this
sample code
. When run in a
browser that supports CORS
, you can authenticate using OAuth 2 and then perform the entire browser-based upload flow entirely from JavaScript. Previously, the portion of the code that
POST
ed metadata to the YouTube API needed to be run on a web server.
We can’t wait to see what JavaScript developers will build now that the doors to CORS are open. Enjoy!
Cheers,
—Jeff Posnick, YouTube API Team
No comments :
Post a Comment
Labels
.net
acceleration
access control
accessibility
actionscript
activities
activity
android
announcements
apis
app engine
appengine
apps script
as2
as3
atom
authentication
authorization
authsub
best practices
blackops
bootcamp
captions
categories
channels
charts
chrome
chromeless
client library
clientlibraries
clientlogin
code
color
comments
compositing
create
curation
custom player
decommission
default
deprecation
devs
direct
discovery
docs
Documentation RSS
dotnet
education
embed
embedding
events
extension
feeds
flash
format
friendactivity
friends
fun
gears
google developers live
google group
googlegamedev
googleio
html5
https
iframe
insight
io12
io2011
ios
iphone
irc
issue tracker
java
javascript
json
json-c
jsonc
knight
legacy
Live Streaming API
LiveBroadcasts API
logo
mashups
media:keywords keywords tags metadata
metadata
mobile
mozilla
news
oauth
oauth2
office hours
open source
partial
partial response
partial update
partners
patch
php
player
playlists
policy
previews
pubsubhubbub
push
python
quota
rails
releases
rendering
reports
responses
resumable
ruby
samples
sandbox
shortform
ssl https certificate staging stage
stack overflow
stage video
staging
standard feeds
storify
storyful
subscription
sup
survey
tdd
theme
tos
tutorials
updates
uploads
v2
v3
video
voting
watch history
watchlater
webvtt
youtube
youtube api
youtube developers live
youtube direct
ytd
Archive
2015
December
November
October
May
April
March
January
2014
October
September
August
May
March
2013
December
October
September
August
July
June
May
April
March
February
2012
December
November
September
August
July
June
May
The YouTube Player: Now with 30% More Playlistiness!
Unlocking JavaScript’s Potential with CORS
April
March
February
January
2011
December
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
July
June
May
April
March
February
January
2009
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
2007
December
November
August
June
May
Feed
YouTube
on
Follow @youtubedev
No comments :
Post a Comment