Ajax跨域请求无法设置标头

时间:2014-09-26 21:48:42

标签: jquery ajax xmlhttprequest cors

首先,这是我的第一个带有跨域ajax请求的项目。 现在,我有一个测试页面,只有一个按钮,一个输入框和jquery。 我想要做的是将ajax请求发送到另一个domani(我有用户名和密码,但我不知道它必须使用它以及如何)并传递查询,然后打印结果。< / p>

这是我的剧本:

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。没有   &#39;访问控制允许来源&#39;标题出现在请求的上   资源。起源&#39; null&#39;因此不允许访问。

我对CORS进行了一些搜索,但仅仅因为我是初学者,我希望有人能够逐步解释下一步该怎么做才能解决这个错误。

谢谢!

1 个答案:

答案 0 :(得分: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服务器返回到您的应用程序的标头。所以这对你不起作用。