У меня ошибка: «Доступ к выборке в 'http://localhost: 4000 / ' из источника 'http://localhost: 3000 / ' был заблокирован политикой CORS: В запрашиваемом ресурсе отсутствует заголовок «Access-Control-Allow-Origin». Если непрозрачный ответ удовлетворяет ваши потребности, установите режим запроса «no-cors», чтобы получить ресурс с отключенным CORS ». мой сервер:
import { GraphQLServer } from 'graphql-yoga'
import { prisma } from './generated/prisma-client'
import resolvers from './resolvers'
const server = new GraphQLServer({
typeDefs: './src/schema.graphql',
resolvers,
context: request => ({
...request,
resolverValidationOptions: { requireResolversForResolveType: false,},
prisma,
}),
opt:{
cors:{
credentials: true,
origin:{['http://localhost:3000/']}
}
}
})
server.start(opt,() => console.log(`Server is running on http://localhost:4000`));
, а мой клиент:
import { ApolloProvider } from 'react-apollo'
import ApolloClient from 'apollo-client'
import {BrowserRouter} from 'react-router-dom'
import { setContext } from 'apollo-link-context'
import { AUTH_TOKEN } from './constants'
import { createHttpLink } from 'apollo-link-http'
import { InMemoryCache } from 'apollo-cache-inmemory';
import history from './history';
import { onError } from "apollo-link-error";
import { SnackbarProvider, useSnackbar } from 'notistack';
const httpLink = createHttpLink({
uri: 'http://localhost:4000/',
});
const authLink = setContext((_, { headers }) => {
const token = localStorage.getItem(AUTH_TOKEN);
return {
headers: {
'Access-Control-Allow-Methods': 'GET,PUT,POST,DELETE,OPTIONS',
"Access-Control-Allow-Credentials" : true,
'Access-Control-Allow-Origin': "http://localhost:3000/",
authorization: token ? `Bearer ${token}` : ''
}
}
});
const linkError = onError(({ graphQLErrors, networkError }) => {
if (graphQLErrors)
graphQLErrors.map(({ message, locations, path }) =>
console.log(
`[GraphQL error]: Message: ${message}, Location: ${locations}, Path: ${path}`,
),
);
if (networkError) console.log(`[Network error]: ${networkError}`);
});
const client = new ApolloClient({
link: authLink.concat(httpLink),
cache: new InMemoryCache(),linkError,
fetchOptions: {
mode: 'cors',
},
});
ReactDOM.render(
<BrowserRouter>
<ApolloProvider client={client}>
<SnackbarProvider>
<App />
</SnackbarProvider>
</ApolloProvider>
</BrowserRouter>,
document.getElementById('root'),
);
Пожалуйста, помогите мне найти ошибку, я посмотрел другую информацию, и ничего не помогло. Спасибо