Symfony3 с NelmioCors и vue.js с axios - ошибка

Мой веб-сервер настроен на Nginx. На хосте srv.local у меня есть Symfony3. Конфигурация:

config.yml:

# NelmioCors Configuration
nelmio_cors:
paths:
    '^/':
        allow_origin: ['*']
        allow_headers: ['*']
        allow_methods: ['POST', 'PUT', 'GET', 'DELETE']
        max_age: 3600

routing.yml:

login_check:
        path: /login_check
        methods: [POST]

security.yml:

firewalls:
    login:
        pattern:  ^/login
        stateless: true
        anonymous: true
        form_login:
            check_path: /login_check
            require_previous_session: false
            success_handler: lexik_jwt_authentication.handler.authentication_success
            failure_handler: lexik_jwt_authentication.handler.authentication_failure

    api:
        pattern: ^/api
        stateless: true
        anonymous: false
        provider: database
        guard:
            authenticators:
                - lexik_jwt_authentication.jwt_token_authenticator

access_control:
    - { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/api, roles: IS_AUTHENTICATED_FULLY }

На хосте client.local у меня есть vue.js и метод возвращает ответ:

return axios({
  method: 'post',
  url: 'http://srv.local/login_check',
  headers: {
    'content-type': 'multipart/form-data'
  },
  data: {
    _username: 'admin',
    _password: 'admin'
  },
  responseType: 'json'
})

После запуска этого метода vue.js я получаю ошибку:

No 'Access-Control-Allow-Origin' header is present on the requested resource.

Я использовал решение с http://www.jakelitwicki.com/tags/headers/, но затем я получил "Ошибка сети" в ответном сообщении. Я использовал много решений от Stackru, но без положительного результата. Что я делаю не так? Как я могу использовать NelmioCore и Vue.js (axios) вместе?

Когда я использовал curl, я получил правильный ответ json:

curl -X POST http://srv.local/login_check -d _username=admin -d _password=admin

1 ответ

Я прокомментировал Нельмио, как писал @sideshowbarker, моя вина. Теперь у меня ошибка Symfony из журнала:

[2017-04-16 12:08:22] doctrine.DEBUG: SELECT t0.id AS id_1, t0.username AS username_2, t0.email AS email_3, t0.password AS password_4, t0.password_expires_at AS password_expires_at_5, t0.status AS status_6, t0.last_login_at AS last_login_at_7, t0.last_wrong_login_at AS last_wrong_login_at_8, t0.last_password_changed_at AS last_password_changed_at_9, t0.confirmation_token AS confirmation_token_10, t0.created_at AS created_at_11, t0.updated_at AS updated_at_12 FROM user t0 WHERE t0.username = ? LIMIT 1 ["NONE_PROVIDED"] []
[2017-04-16 12:08:22] security.INFO: Authentication request failed. {"exception":"[object] (Symfony\\Component\\Security\\Core\\Exception\\BadCredentialsException(code: 0): Bad credentials. at /srv/srv.local/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authentication/Provider/UserAuthenticationProvider.php:73, Symfony\\Component\\Security\\Core\\Exception\\UsernameNotFoundException(code: 0): User \"NONE_PROVIDED\" not found. at /srv/srv.local/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/Security/User/EntityUserProvider.php:61)"} []

Похоже, нет имени пользователя и пароля является пост от Vue. 'curl' работает все так же, как и ожидалось, поэтому я знаю, что учетные данные верны. Я новичок в vue.js. Должен ли я установить что-то для axios, отличное от свойства data?

Другие вопросы по тегам