0

我正在使用 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 客户端?

4

0 回答 0