CakePHP REST API 为 AJAX 提供 403,但不为 cURL 提供

CakePHP REST API giving 403 for AJAX but not for cURL

本文关键字:提供 cURL REST AJAX CakePHP API      更新时间:2023-09-26

我使用 CakePHP 构建了一个 REST API,遇到了以下问题。

如果我执行

curl -v -H 'ACCEPT: application/json' -u sam:hello http://localhost/journeys/latest.json

我得到的预期响应是:

{"journey":{"Journey":{"id":"17","description":null,"created":"2013-01-31 23:02:54","modified":"2013-01-31 23:02:54","user_id":"3"}}}

然后,我尝试将此 API 合并到我编写的一些 JavaScript 中,我可以在其中请求最新的旅程数据,然后提取 id 以供使用。

我写的Javascript如下:

  Server.getLatestJourney = function() {
$.ajax({
    type: 'GET',
    contentType: 'application/json',
    url: 'http://localhost/journeys/latest.json',
    dataType: "json",
    username: 'sam',
    password: 'hello',
    success: function(data, textStatus, jqXHR){
        latestJourney = data.journey.Journey.id;
        console.log('Laters journey id = ' + latestJourney);
    },
    error: function(jqXHR, textStatus, errorThrown){
        console.log('Latest Journey error: ' + textStatus + ' Error: ' + errorThrown);
    }
});
}

当该代码段执行时,我在JavaScript控制台中收到以下错误

GET http://sam:hello@localhost/journeys/latest.json 403 Forbidden 91ms

我完全被这个难住了。任何帮助将不胜感激。

删除选项contentType: 'application/json'它应该可以工作 - 在我的 REST API 中,这也是一个问题,从 ajax 请求中删除这一行解决了它