【发布时间】:2013-02-01 00:26:59
【问题描述】:
我使用 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
我完全被这个难住了。任何帮助将不胜感激。
【问题讨论】:
-
这只是webroot/journeys/latest.json中的一个静态json文件吗?您使用什么浏览器进行测试?我也想知道如果没有用户名/密码,您是否会遇到同样的错误。
-
JSON 是由 CakePHP 控制器操作生成的,我在 Ubuntu 上使用 Firefox。如果我把用户名和密码拿走,错误是一样的。
-
你如何处理 http 身份验证 - 使用 Cake AuthComponent 还是仅在 .htaccess 中?
-
身份验证由 CakePHP 的 AuthComponent 处理
-
您是否尝试过禁用 Auth 组件以查看它是否有效?我真的无法判断这是身份验证问题还是其他问题。包含一些控制器代码可能会有所帮助,也许您可以在控制器中进行一些调试以确保 ajax 请求实际上是命中控制器。
标签: javascript jquery ajax rest cakephp