1

我正在使用 Symfony2(2.3 版)并尝试在服务器端创建一个与 JS 客户端一起使用的 REST API(这是我可以在任何网页上注入的书签)。

目前我已经实施:

  • 登录操作。我将 _user/_password 值直接发送到 login_check 操作。我调整了这个设置“success_handler”和“failure_handler”,这样我就可以编写一条自定义响应消息,指示登录是否正常(特别是登录失败时发送 404 消息而不是重定向到登录页面)。这个想法是在不需要登录表单页面的情况下启动会话。

  • 一组带有 GET、POST 和 PUT 方法的操作。

我正在使用适用于 chrome 的 Postman REST Client 插件,我的测试似乎一切正常。

当我从客户端应用程序调用 POST 操作时,一旦通过 AJAX 记录该问题,则 POST 操作被取消。查看 Symfony 日志,我看到下一条消息:

[2013-07-15 08:17:01] security.INFO: Authentication exception occurred; redirecting to authentication entry point (A Token was not found in the SecurityContext.) [] []

好像我根本没有登录,我被重定向到登录表单页面。在 Chrome 上,我看到 POST 操作已取消。在 FF 上,我得到一个 302 HTTP 代码(重定向)。

另一方面,我使用 Postman REST client plugin for chrome 来测试我的 API,它似乎工作正常。使用 Postman 时我能看到的唯一区别是 cookie 被发送到服务器,而当我在远程页面上注入客户端 JS 代码时,cookie 似乎没有被发送。

注意:我的 API 考虑了 AJAX 请求的相同域策略(在服务器端使用 Access-Control-Allow-Origin 和 Access-Control-Allow-Methods)。

任何想法,在此先感谢。

4

0 回答 0