使用ajax无法获取请求
以下是错误消息: XMLHttpRequest无法加载(url1)。 Access-Control-Allow-Origin不允许使用原产地http://localhost:8081。使用ajax无法获取请求
下面是代码:
$.ajax({
url: (the url2),
async : false,
data: { fbId : eh,
fbSecret : meh,
key : bleh
},
datatype: "json",
success: function(result){
console.log(result);
}
});
我知道网址是正确的,因为当我点击它,它给了我,我需要的数据,这就好比{“名字”:“嗒嗒”]}
我是否需要提供更多详细信息?
我已经尝试过使用jsonp/html而不是json,将数据直接放入url中而不是单独作为数据,并使用$ .get而不是$ .ajax,并编辑$ .ajaxsetup。 ..
端口不匹配;)the the尝试建立请求的页面必须位于同一个端口上;)
为什么downvote?这是完全正确的。 –
我认为您尝试访问的服务器与服务脚本的服务器不同 - 从服务器A提供的页面内的JavaScript代码可以只使用XmlHttpRequest访问服务器A.
如果这是问题,那就没有简单的解决方案 - 您必须使用代理或完全避免使用XmlHttpRequest。
same-origin-policy是一种浏览器安全措施,它限制JavaScript代码与源自其他网站的资源进行交谈,即从任何其他域和/或端口加载的资源。例如。 JS在网页上运行http://google.com:80不能从http://cbs.com加载或数据甚至http://cbs.com:8081
工作围绕互动SOP 一)代理在您的服务器:您创建您的应用程序一个终点,讨论到的外部URL并返回导致
b)加载JSON响应转换为<script>
标签否则JSONP即与填充JSON
例如:
var url = "http://localhost:8081/?queryString=asdsa&callback=jsonCallback";
var script = document.createElement("script");
script.setAttribute("src", url);
script.setAttribute("type", "text/javascript");
window.jsonCallback = function(jsonObj) {
// use JSON object here
// cleanup
document.body.removeChild(script);
delete window[callback];
}
document.body.appendChild(script)
在你的情况下,因为你正在运行它的一个不同的端口它是无效的,因此由浏览器抛出的错误..
并且有一些服务器端的变化,与此一起..阅读如何这样做对你的脚本语言..
基本反应应该是这样的:
jsonCallback({"Name": "Random", "Id" : 2432, "Rank": 453})
出于安全原因,AJAX请求不被允许到其他域。谷歌应该告诉你这个... – Bojangles