Php prod环境中的Ajax请求导致访问被拒绝(未完全验证中的用户)

Php prod环境中的Ajax请求导致访问被拒绝(未完全验证中的用户),php,ajax,session,symfony,Php,Ajax,Session,Symfony,我正在使用Symfony 2.3,我的生产服务器出现问题 在生产环境中,所有AJAX请求都会失败(并非总是如此)(我不知道有什么机会)。在prod.log中,我有: security.INFO: Populated SecurityContext with an anonymous Token [] [] [2013-08-08 16:03:28] security.INFO: No expression found; abstaining from voting. [] [] [2013-08

我正在使用Symfony 2.3,我的生产服务器出现问题

在生产环境中,所有AJAX请求都会失败(并非总是如此)(我不知道有什么机会)。在prod.log中,我有:

security.INFO: Populated SecurityContext with an anonymous Token [] []
[2013-08-08 16:03:28] security.INFO: No expression found; abstaining from voting. [] []
[2013-08-08 16:03:28] security.DEBUG: Access is denied (user is not fully authenticated)      by  "/var/www/clients/client1/web1/web/vendor/symfony/symfony/src/Symfony/Component/Security/Http/Firewall/AccessListener.php" at line 73; redirecting to authentication entry point
如果我在prod环境中,并且我刷新了页面(在ajax错误之后),那么什么也不会发生。我仍在登录。但是ajax失败了,出现了同样的错误。 如果我切换到app_dev.php,错误就会消失,AJAX也可以工作

(ajax路线处于游戏/*模式下)

这里是我的配置:

jms_security_extra:
secure_all_services: false
expressions: true

security:
    encoders:
        Gdr\UserBundle\Entity\User: sha512

role_hierarchy:
    ROLE_ADMIN:       ROLE_USER
    ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

providers:
    database:
        entity: { class: GdrUserBundle:User, property: email }

firewalls:
    secured_area:
        pattern:    ^/
        form_login:
            check_path: /login_check
            login_path: /login
            success_handler: authentication_handler
        logout:
            path:   /logout
            target: /
            success_handler: authentication_handler
            invalidate_session: true
        anonymous: ~

access_control:
    - { path: /game/*, roles: ROLE_USER }
    - { path: /login/choose-character, roles: ROLE_USER }
    - { path: /login, roles: IS_AUTHENTICATED_ANONYMOUSLY}
    - { path: /logout, roles: ROLE_USER }
    - { path: /admin/*, roles: ROLE_ADMIN }

######Config.yml
framework:
session:
    cookie_lifetime: 0
    save_path: "%kernel.root_dir%/Sessions/"
    cookie_httponly: false
   # save_path: ~
我用firebug记录的每个ajax请求都会发送一个302头以重定向到登录。如果我尝试在没有AJAX的情况下访问url,它会工作。没有302码

有什么想法吗?

我发现了问题

问题是我使用的绝对URL带有“www”,即www.mydomain.com,但cookie主机没有“www”

现在使用相对URL就可以了。谢谢大家:)


最后,我在这里找到了我的解决方案:

这很愚蠢,但从一开始就很有用:是否清除了缓存?尝试倾听服务器的流量。我猜会话id cookie未被发送,因此无法建立安全会话。您是否可以暂时禁用
config.yml
中的那些自定义
会话
设置,以查看这是否是原因?mb您有一些禁用cookie的代理服务器?