Köşeli belgede, açısal httpclient
açmanın otomatik olarak XSRF-TOKEN
çerezinin değerini posta isteğinin üstbilgisinde X-XSRF-TOKEN
başlığında göndereceği belirtiliyor. Documentation linkangular4 httpclient csrf x-xsrf-token göndermiyor
Ancak, başlık benim için gönderilmez. İşte çerez
router.get('/set-csrf',function(req,res,next){
res.setHeader('Set-Cookie', "XSRF-TOKEN=abc;Path=/; HttpOnly; SameSite=Strict");
res.send();
})
ayarlamak için
Nodejs kod ben app.module.ts içinde httpclient kullandık benim kodudur
imports: [
HttpClientModule
]
** Yukarıdaki kod sadece ayıklama içindir amaç. Set-csrf uç noktam yok.
Ancak posta isteği gönderdiğimde herhangi bir başlık göndermiyor. Hata ayıklayamıyorum.
Sorunu, açısal github deposuna da ekledim. HttpXsrfInterceptor, isteğin GET veya HEAD olup olmadığını veya http ile başladığını kontrol eder. Doğruysa, üstbilgiyi ekleyerek atlar. İşte
onlar http/s bölümü için atlanır neden emin değilim HttpXsrfInterceptor classintercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const lcUrl = req.url.toLowerCase();
// Skip both non-mutating requests and absolute URLs.
// Non-mutating requests don't require a token, and absolute URLs require special handling
// anyway as the cookie set
// on our origin is not the same as the token expected by another origin.
if (req.method === 'GET' || req.method === 'HEAD' || lcUrl.startsWith('http://') ||
lcUrl.startsWith('https://')) {
return next.handle(req);
}
const token = this.tokenService.getToken();
// Be careful not to overwrite an existing header of the same name.
if (token !== null && !req.headers.has(this.headerName)) {
req = req.clone({headers: req.headers.set(this.headerName, token)});
}
return next.handle(req);
}
yılında kodudur. İşte benim issue in github
Bir CORS isteği kullanıyor musunuz? – Alexandr
"Access-Control-Allow-Headers" başlıklarını ekliyorum, "*" ' – netuser
Sorununuzu gördüm. Bana öyle geliyor ki açısal http [s] linklerini farklı şekilde işlemelidir. Örneğin, her alan için ayrı ayrı son csrf belirteci saklayın. Belki başka bir Interceptor vinçinin böyle bir şekilde csrf kullanması iyidir? – Alexandr