浏览器不为CORS发送Request头

时间:2016-02-25 08:10:01

标签: javascript ajax http-headers xmlhttprequest cors

当我尝试发出请求时,我收到请求标头问题。这是一个CORS问题, 我已经尝试了许多以前给出的堆栈溢出答案。但没有运气。我还在同一页。

当我尝试使用Advanced Rest Client Extension时,它的工作正常。我不确定是什么问题。所以任何帮助都表示赞赏。

下面是我尝试使用AJAX的“获取”请求,

$.ajax({
    xhrFields: {
        withCredentials: true
    },
    headers:{'ApiKey':"ENTERED API KEY HERE"},
    //dataType: 'jsonp', when I try this browser is able to send GET request but without request headers, hence I am receiving 401
    type: "GET",
    url: "https://www.spyfu.com/apis/kss_api/kss_kws?q=real estate&r=10"
}).done(function (data) {
    console.log(data);
});

//same using xml http request

var apiKey = '7d8eeec2XXXXXXXXXXXXXXXXX';

var xhr = new XMLHttpRequest();
xhr.open("GET", "https://www.spyfu.com/apis/kss_api/kss_kws?q=real estate&r=10", true);
xhr.setRequestHeader("apikey", apiKey);
xhr.withCredentials = true;
xhr.onload = function () {
    console.log(xhr.responseText);
};
xhr.send();

PHP代码:

function httpGet()
{
    $keyword = 'real estate';
    $resultCount = 20;
    $apiUrl = 'https://www.spyfu.com/apis/kss_api/kss_kws?q='.$keyword.'&r='.$resultCount;
    $apiKey = '7d8eeec2-xxxxxxxxxxxxxxxxxx';
    $ch = curl_init();
    print_r('  '.$apiUrl);
    print_r($apiKey);
    curl_setopt($ch,CURLOPT_URL,$apiUrl);
    //curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'ApiKey: '.$apiKey
    ));
    $output=curl_exec($ch);
    $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    print curl_error($ch);
    curl_close($ch);
    echo "<pre>".htmlspecialchars($output)."</pre>";
    echo 'HTTP code: ' . $httpcode;

    return $output;
}
$response = httpGet();

更新:我不应该问这个问题。得到答案后,我想删除这个问题。但是我不会这样做,因为我相信我的问题可能会遇到一个问题,如果他不知道这个事实,为什么我在浏览器中遇到CORS问题而不是在扩展中 Quentin已经给出了明确的解释。在Why does Ajax give me a cross origin error when I can make the request from PHP?

所以在知道了这一点之后,我尝试使用PHP代码,但猜猜我得到了这个问题“SSL证书问题:证书链中的自签名证书”。不要惊慌,清除这个问题很简单。只需更新 cacert.pem 即可。由于我使用Xampp进行wordpress开发,我在本地机器上更新了。请按照answer

进行操作

希望这个更新可以帮助某人在10分钟而不是3小时内解决他的问题,就像在我的情况下LOL一样;)

非常感谢 Quentin 让我知道此信息

0 个答案:

没有答案