कोणीय दस्तावेज़ में नहीं भेजता है, यह उल्लेख किया गया है कि कोणीय httpclient
स्वचालित रूप से पोस्ट अनुरोध के शीर्ष X-XSRF-TOKEN
में कुकी XSRF-TOKEN
का मान भेज देगा। Documentation linkकोणीय 4 httpclient csrf x-xsrf-token
लेकिन यह मेरे लिए हेडर नहीं भेजता है। यहाँ मेरी कोड
NodeJS कुकी
router.get('/set-csrf',function(req,res,next){
res.setHeader('Set-Cookie', "XSRF-TOKEN=abc;Path=/; HttpOnly; SameSite=Strict");
res.send();
})
स्थापित करने के लिए कोड मैं app.module.ts में httpclient का इस्तेमाल किया है है
imports: [
HttpClientModule
]
** उपरोक्त कोड सिर्फ डिबग के लिए है उद्देश्य। मेरे पास सेट-सीएसआरएफ एंडपॉइंट नहीं है।
लेकिन जब मैं कोई पोस्ट अनुरोध भेजता हूं तो यह कोई हेडर नहीं भेजता है। मैं डीबग करने में सक्षम नहीं हूँ।
मैंने इस समस्या को कोणीय के गीथब भंडार में भी जोड़ा है। HttpXsrfInterceptor जांचता है कि अनुरोध GET या HEAD है, या यदि यह http से शुरू होता है। यदि सही है, तो यह हेडर जोड़ना छोड़ देता है।
यहाँ HttpXsrfInterceptor class
intercept(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);
}
में कोड मुझे यकीन है कि क्यों वे http/s भाग के लिए छोड़ दिया है नहीं कर रहा हूँ है। यहां मेरा issue in github
के बजाय "withOptions" का उपयोग करने की आवश्यकता है क्या आप CORS अनुरोध का उपयोग करते हैं? – Alexandr
मैं हेडर 'एक्सेस-कंट्रोल-स्वीट-हेडर "," * "' – netuser
जोड़ रहा हूं, मैंने आपकी समस्या देखी है। ऐसा लगता है कि कोणीय को विभिन्न तरीकों से http [s] लिंक को संसाधित करना चाहिए। उदाहरण के लिए प्रत्येक डोमेन के लिए अलग-अलग सीएसआरएफ टोकन स्टोर करें। हो सकता है कि एक और इंटरसेप्टर विंच सीएसआरएफ को इस तरह से संभाल लें? – Alexandr