我正在使用 XAMPP 并desk
从本地网络中的另一台 PC 打开一个托管在 PC 上的网站。
我正在使用带有CreateFreshApiToken
中间件的 Laravel Passport。当我从 PC“ desk
” 发布到我的 GraphQL API 时,一切正常,但从另一台 PC 发布失败:没有发送 cookie。
Cookie 仅适用于 HTTP。我想知道这是否是一些跨域问题,但我在任何地方都使用相同的域:http://desk
以及http://desk/graphql
我的 API。
为什么不发送 cookie?
阿波罗客户端设置
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 客户端?