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?