2015-04-15 28 views
10

Mam dwie oddzielne usługi, jedną stronę aplikacji React i express API i próbuję komunikować się z SPA do interfejsu API przy użyciu nowej funkcji fetch. Ponieważ obie usługi znajdują się w różnych domenach, używam oprogramowania pośredniego CORS wewnątrz aplikacji express w celu wysyłania żądań z SPA do interfejsu API. Staram się, aby wszelkie fetch wnioski obejmują również ciasteczka więc w ten sposób mogę zweryfikować cookies w mojej aplikacji express npTrudności z wysyłaniem plików cookie z żądaniami pobierania w JavaScript

po stronie klienta:

fetch('http://localhost:8000/hello', { 
    credentials: 'include', 
    mode: 'cors' 
}).then(/* ... */) 

Po stronie serwera:

var app = express(); 

app.use(cors({ credentials: true }); 
app.use(cookieParser()); 

app.get('/hello', function (req, res) { 
    // Try and find the cookies sent with the request 
    console.log(req.cookies); 

    res.status(200).json({ message: 'cookies received!' }); 
}); 

Jednak niezależnie od tego, co próbuję, nadal nie mogę uzyskać dostępu do plików cookie na obiekcie request, mimo że mogę uzyskać do nich dostęp za pomocą document.cookies.

Przykładem cookies:

name: token 
value: TOKEN_VALUE 
domain: localhost 
path:/
http: false 
secure: false 

Czy ktoś ma sugestie dotyczące sposobu podejścia do tego? Każda pomoc będzie bardzo ceniona!

+0

jest to tylko literówka, że ​​nie masz zamykający cytat po 'mandatów:„include'? Również masz JSFiddle lub Pnkr? – Trevor

+0

Tak, przepraszam! Tylko literówka. I niestety nie, ponieważ dotyczy on komponentu po stronie serwera. –

+0

Czy możesz udostępnić swój kod po stronie klienta. Mogę stworzyć własny serwer. – Trevor

Odpowiedz

7

Pobrana biblioteka polifill, której używasz, nie jest tak pisana jak do tej specyfikacji. W przypadku referencji oczekuje, że "cors" będzie wartością w przeciwieństwie do "include". Chciałbym edytować moją lokalną kopię fetch.js na linii 264, aby dostosować się do standardu, wysłać żądanie ściągnięcia i być na tropie lepiej obsługiwanej biblioteki polyfill.

Zobacz otwartego problem: https://github.com/github/fetch/issues/109

https://github.com/github/fetch

https://developer.mozilla.org/en-US/docs/Web/API/GlobalFetch/fetch

+0

Istnieją już wnioski o wycofanie, aby naprawić problem: https://github.com/github/fetch/pull/113/files – Cordle

+1

Witam, miałem ten sam problem. zmiana na "cors" zamiast "include" nie rozwiązała problemu dla mnie :( –

+1

to jest moje pytanie: http://stackoverflow.com/questions/35612226/session-can-not-be-saved-sent-from- fetch-post-request –

Powiązane problemy