Node.js CORS设置被忽略
node.js显然忽略了我的cors设置,我遇到了一个问题。 以下是我的回购协议: 后端中的罪犯代码:Node.js CORS设置被忽略,node.js,cors,apollo-client,next.js,Node.js,Cors,Apollo Client,Next.js,node.js显然忽略了我的cors设置,我遇到了一个问题。 以下是我的回购协议: 后端中的罪犯代码: ... //config.CLIENT_URL is 'http://localhost:3000' const corsOptions: cors.CorsOptions = { origin: [String(config.CLIENT_URL)], credentials: true, }; app.use(cors(corsOptio
...
//config.CLIENT_URL is 'http://localhost:3000'
const corsOptions: cors.CorsOptions = {
origin: [String(config.CLIENT_URL)],
credentials: true,
};
app.use(cors(corsOptions));
...
阿波罗计划的实施
//config.BACKEND_URL_DEV is 'http://localhost:4000/graphql/'
function create (initialState, { getToken }) {
const httpLink = createHttpLink({
credentials: "include",
uri: `${config.BACKEND_URL_DEV}`,
})
const authLink = setContext((_, { headers }) => {
let token = getToken()
return {
headers: {
...headers,
cookie: token ? token : ''
}
}
})
return new ApolloClient({
connectToDevTools: process.browser,
ssrMode: !process.browser, // Disables forceFetch on the server (so queries are only run once)
link: authLink.concat(httpLink),
cache: new InMemoryCache().restore(initialState || {})
})
}
当我转到http://localhost:3000/dashboard
我知道如果我通过graphql playerd
登录,将执行我的查询,这是我收到的消息:
有趣的是,虽然收到了足够多的数据,但CORS阻止了它的显示。
在Opera、Chrome和Firefox开发版上测试
如果请求源域正确,我的后端似乎正在将*
设置为Access Control Allow Origin
非常感谢您对此事的任何见解 原来问题在于将
cors
配置传递给apollo server express
,因为app.use(cors(corsOptions))
对这种设置实际上没有任何作用
正确答案:
将cors配置移动到此部分:
apolloServer.applyMiddleware({ app, cors: corsOptions });
找到答案多亏了这个尝试执行
console.log(cors(corsOptions))
并检查所有值,以确保所有设置都正确这将返回[函数:corsmidware]
,但我找到了解决方案!把它贴出来作为回答谢谢@evgenifotia你让我走上了正轨!