Muh*_*man 151 javascript ajax xmlhttprequest youtube-api cors
我看到以下错误:
Origin http://localhost:8080 is not allowed by Access-Control-Allow-Origin
Run Code Online (Sandbox Code Playgroud)
使用此代码:
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);
Run Code Online (Sandbox Code Playgroud)
是什么导致这种情况,我该如何解决?
and*_*ier 171
在当前域之外发出ajax请求时,Javascript受到限制.
出于安全原因,Javascript受"同源策略"的限制,因此恶意脚本无法联系远程服务器并发送敏感数据.
jsonp是一种使用javascript的不同方式.您发出请求并将结果封装到在客户端中运行的回调函数中.它与将新脚本标记链接到html的head部分相同(您知道可以从不同的域加载脚本而不是您的脚本).
但是,要使用jsonp,必须正确配置服务器.如果不是这种情况你不能使用jsonp,你必须依赖服务器端代理(PHP,ASP等).有很多与此主题相关的指南,只是谷歌吧!
Sun*_*nny 88
localhost:8080由于"同源策略",XMLHttpRequest不允许您访问.
您可以通过在响应中添加标头来允许来自现代浏览器的请求localhost:8080:
Access-Control-Allow-Origin: *
Run Code Online (Sandbox Code Playgroud)
您可以通过向HTTP服务器添加指令或通过服务器端代码(PHP,Ruby,...)添加标头来实现.
在https://developer.mozilla.org/en/http_access_control上阅读有关Cross-Origin ajax请求的更多信息
Deq*_*ing 37
如果您使用的是Chrome,那么一个简单的解决方法(仅用于开发目的)就是使用选项--disable-web-security.
小智 10
在解决方案中添加global.asax.
加
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
Run Code Online (Sandbox Code Playgroud)
在
protected void Application_BeginRequest(object sender, EventArgs e)
{
}
Run Code Online (Sandbox Code Playgroud)
如果您使用apache,则可以正常工作:将其放入/创建公共根目录中的.htaccess文件,并添加您可能需要的任何其他文件扩展名.
<FilesMatch "\.(ttf|otf|eot|woff|jpg|png|jpeg|gif|js|json|html|css)$">
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)
对于本地开发,您可以使用工具来修改HTTP响应头.例如,Charles可以通过包含的重写工具来执行此操作:重写工具
只需为目标域/位置添加新规则:
Type: Add Header
Where: Response
Replace
Name: Access-Control-Allow-Origin
Value: *
Replace All
Run Code Online (Sandbox Code Playgroud)
这里,我们需要为Apache Http做两件事
1) 在 httpd.config 文件中,取消注释此文件
LoadModule headers_module modules/mod_headers.so
Run Code Online (Sandbox Code Playgroud)
2)在底部添加这一行。
Header set Access-Control-Allow-Origin "*"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
424914 次 |
| 最近记录: |