2014-09-26 70 views
0

首先,这是我的第一个具有跨域ajax请求的项目。 现在,我有一个只有一个按钮,输入框和jQuery的测试页面。 我想要做的就是发送ajax请求到另一个domani(我有用户名和密码这个,但我不知道它,我必须使用它和如何)并传递查询,然后打印结果。Ajax跨域请求无法设置标题

这是我的脚本:

jQuery(document).ready(function ($){ 
    $("#btn").on("click", function(){ 

    var searchRequest = $("#testSearch").val(); 

    var url = {"https://vk.com/search?c%5Bq%5D="}; 

    var musicSearchRequest = searchRequest + "&c%5Bsection%5D=audio"; 
    var vkLogin = new XMLHttpRequest(); 

    vkLogin.open("GET", url + musicSearchRequest, true); 
    vkLogin.send(); 

    $.ajax({   
     url: url, 
     type: "POST", 
     crossDomain: true, 
     dataType: 'jsonp', 
     data: musicSearchRequest, 
     success: function(){console.log("ok");}, 
     error: function(){console.log("no");} 
    }); 

    $("#result").html(vkLogin.responseText); 
    console.log(vkLogin.responseText); 

}); 
}); 

,这是HTML(我不认为是非常重要的,但无论如何,我会复制):

<button id="btn">click</button> 
<input type="text" id="testSearch"></input> 
<div id="result"></div> 

现在,在点击,这是打印到我的调试控制台中的结果:

XMLHttpRequest无法加载 https://vk.com/search?c%5Bq%5D=katy%20perry&c%5Bsection%5D=audio。否 “访问控制 - 允许来源”标题出现在请求的 资源中。因此不允许原产地'null'访问。

我搜索了一下关于CORS,但仅仅因为我是初学者,我希望有人一步一步解释接下来要做什么来解决这个错误。

谢谢!

回答

1

您误会了CORS的工作原理。这里有一个很好的解释:https://vk.com/search?c%5Bq%5D=

错误消息:

No 'Access-Control-Allow-Origin' header is present on the requested resource 

在谈论头收到 vk.com。除非您在vk.com上控制服务器(听起来您并没有这样做),否则您无法修改vk.com服务器返回到您的应用的标头。所以这不适合你。