为什么我在这里看到了"源被Access-Control-Allow-Origin拒绝"的错误?[重复]
为什么我在这里看到了"源被Access-Control-Allow-Origin拒绝"的错误?[重复]
这个问题已经有答案了:
我看到了以下的错误:
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 = ''+ 'My First API'+ 'First API'+ 'People'+ 'first, api'; 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);
这是什么原因造成的,我该怎么解决它?
admin 更改状态以发布 2023年5月22日
由于“同源策略”,XMLHttpRequest将不允许您访问localhost:8080
。
您可以通过在localhost:8080
的响应中添加标头来允许现代浏览器进行请求:
Access-Control-Allow-Origin: *
您可以通过向HTTP服务器添加指令或通过服务器端代码(PHP,Ruby等)添加标头来实现。
阅读有关跨源Ajax请求的更多信息,请访问https://developer.mozilla.org/en/http_access_control
Javascript在跨域请求时受限。
- 示例1:你的域名是example.com,想要向test.com发出请求 => 你无法这样做。
- 示例2:你的域名是example.com,想要向inner.example.com发出请求=>你无法这样做。
- 示例3:你的域名是example.com:80,想要向example.com:81发出请求 =>你无法这样做。
- 示例4:你的域名是example.com,想要向example.com发出请求 =>你可以这样做。
Javascript因安全原因而受到“同源策略”的限制,以防恶意脚本联系远程服务器并发送敏感数据。
jsonp是在javascript中使用不同的方法。您发出请求,结果被封装在回调函数中,在客户端运行。这与链接一个新的脚本标签到html的头部中完全一致(您知道您可以在这里从不同的域加载脚本)。
但是,要使用jsonp,服务器必须正确配置。如果不是这种情况,你不能使用jsonp,你必须依靠服务器端代理(PHP、ASP等)。有大量与此主题相关的指南,请使用谷歌搜索!