Я использую XAMPP и открываю веб-сайт, размещенный на ПК desk
с другого ПК в локальной сети.
Я использую Laravel Passport с CreateFreshApiToken
промежуточным ПО. Когда я отправляю сообщение на API GraphQL с ПК "desk
", все работает нормально, но отправка с другого ПК завершается неудачно: файлы cookie не отправляются.
Cookies только для 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?