我正在使用XAMPP,并从本地网络中的另一台PC打开PC desk
上托管的网站。
我正在将Laravel Passport与CreateFreshApiToken
中间件一起使用。当我从PC“ desk
”发布到GraphQL API时,一切正常,但从另一台PC发布失败:没有发送Cookie。
Cookie仅使用HTTP。我想知道这是否是跨域问题,但是我到处都使用相同的域:API的http://desk
和http://desk/graphql
。
为什么不发送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 Client?