我看到以下错误:
Origin http://localhost:8080 is not allowed by Access-Control-Allow-Origin
使用此代码:
var http = new getXMLHttpRequestObject(); var url = "http://gdata.youtube.com/action/GetUploadToken"; var sendXML = '<?xml version="1.0"?><entry xmlns="http://www.w3.org/2005/Atom"'+ 'xmlns:media="http://search.yahoo.com/mrss/'+ 'xmlns:yt="http://gdata.youtube.com/schemas/2007">'+ '<media:group><media:title type="plain">My First API</media:title>'+ '<media:description type="plain">First API</media:description>'+ '<media:category scheme="http://gdata.youtube.com/schemas/2007/categories.cat">People</media:category>'+ '<media:keywords>first, api</media:keywords></media:group></entry>'; http.open("POST", url, true); http.setRequestHeader("Authorization", "AuthSub token=" + AccessToken); http.setRequestHeader("X-GData-Key", "key="+ dev_key); http.setRequestHeader("Content-Type", "application/atom+xml; charset=UTF-8"); http.onreadystatechange = function() { if(http.readyState == 4) { alert(http.responseXML); } } http.send(sendXML);
是什么原因引起的,如何解决?
在当前域之外发出ajax请求时,Javascript是受限制的。
出于安全原因,Javascript受“同一来源策略”限制,以使恶意脚本无法联系远程服务器并发送敏感数据。
jsonp是使用javascript的另一种方式。您发出请求,结果被封装到在客户端中运行的回调函数中。这与将新的脚本标签链接到html的头部相同(您知道可以从不同于此处的域中加载脚本)。 但是,要使用jsonp,必须正确配置服务器。如果不是这种情况,则不能使用jsonp,并且必须依赖服务器端代理(PHP,ASP等)。有很多与此主题相关的指南,只需在Google上搜索即可!