Запрос Ajax в среде prod вызывает отказ в доступе (пользователь не прошел полную проверку подлинности)

Я использую 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: ~ 

Каждый запрос ajax, который я регистрирую с помощью firebug, отправляет заголовок 302 для перенаправления на логин. Если я попытаюсь получить доступ без AJAX к URL-адресу, он будет работать. Нет кода 302.

Есть идеи?

Я нашел проблему.

Проблема заключалась в том, что я использовал абсолютные URL-адреса с «www», то есть http://www.mydomain.com, но хост-файл cookie не был «www».

Использование относительных URL-адресов теперь все в порядке. Спасибо всем 🙂

Я нашел здесь свои решения, в конце: Symfony, jQuery.ajax () call, потеря сеанса