#laravel #vue.js #graphql #apollo-client #vue-apollo
#laravel #vue.js #graphql #apollo-client #vue-apollo
Вопрос:
Я использую XAMPP и открываю веб-сайт, размещенный на ПК desk
, с другого компьютера в локальной сети.
Я использую Laravel Passport с CreateFreshApiToken
промежуточным программным обеспечением. Когда я отправляю сообщение в свой GraphQL API с ПК « desk
«, все работает нормально, но отправка с другого компьютера завершается неудачей: файлы cookie не отправляются.
Файлы cookie доступны только для HTTP. Мне интересно, является ли это какой-то междоменной проблемой, но я везде использую один и тот же домен: http://desk
и http://desk/graphql
для моего API.
Почему файлы cookie не отправляются?
Настройка клиента Apollo
const httpLinkSecret = new HttpLink({
// You should use an absolute URL here
uri: "http://desk/graphql"
});
var csrfToken = window.csrfToken;
Vue.prototype.csrfToken = window.csrfToken;
const authMiddleware = new ApolloLink((operation, forward, error) => {
// add authorization to the headers
operation.setContext({
headers: {
"X-CSRF-TOKEN": csrfToken
}
});
return forward(operation);
});
const apolloClientSecret = new ApolloClient({
link: authMiddleware.concat(errorLink).concat(httpLinkSecret),
cache: new InMemoryCache(),
connectToDevTools: true
});
РЕДАКТИРОВАТЬ 1
Я выяснил, что на других компьютерах это работает в Chrome (только на рабочем столе, не на мобильном устройстве), но не в Edge.
РЕДАКТИРОВАТЬ 2
Если я просто делаю
var xhr = new XMLHttpRequest();
xhr.open('POST', '/graphql', true);
xhr.onload = function () {
// Request finished. Do processing here.
};
xhr.send(null);
Затем добавляется заголовок cookie. Почему это не работает с клиентом Apollo?
Комментарии:
1. Покажите свой код Laravel, в котором вы пытаетесь прикрепить файлы cookie, пожалуйста
2. @Tarasovych Они автоматически подключаются Laravel (сеанс Laravel, токен Laravel, XSRF-токен).
3. Кроме того, они не подключаются только к запросам GraphQL xhr, обычные запросы работают просто отлично
4. Попробуйте вручную прикрепить некоторые файлы cookie к вашему ответу GraphQL и посмотреть, появится ли он в браузере
5. Это не так. Я создал другой post-запрос «/ somepost» для тестирования, и к запросу прикреплен заголовок cookie. Интересно, почему это не работает с / graphql.