feat(common): on-by-default XSRF support in HttpClient (#18108)
Fixes #18100
This commit is contained in:

committed by
Igor Minar

parent
3d85f72652
commit
dd04f09483
@ -6,7 +6,9 @@
|
||||
* found in the LICENSE file at https://angular.io/license
|
||||
*/
|
||||
|
||||
import {ɵparseCookieValue as parseCookieValue} from '@angular/common';
|
||||
import {ɵglobal as global} from '@angular/core';
|
||||
|
||||
import {setRootDomAdapter} from '../dom/dom_adapter';
|
||||
|
||||
import {GenericBrowserDomAdapter} from './generic_browser_adapter';
|
||||
@ -405,16 +407,3 @@ function relativePath(url: any): string {
|
||||
return (urlParsingNode.pathname.charAt(0) === '/') ? urlParsingNode.pathname :
|
||||
'/' + urlParsingNode.pathname;
|
||||
}
|
||||
|
||||
export function parseCookieValue(cookieStr: string, name: string): string|null {
|
||||
name = encodeURIComponent(name);
|
||||
for (const cookie of cookieStr.split(';')) {
|
||||
const eqIndex = cookie.indexOf('=');
|
||||
const [cookieName, cookieValue]: string[] =
|
||||
eqIndex == -1 ? [cookie, ''] : [cookie.slice(0, eqIndex), cookie.slice(eqIndex + 1)];
|
||||
if (cookieName.trim() === name) {
|
||||
return decodeURIComponent(cookieValue);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
@ -9,22 +9,9 @@
|
||||
import {describe, expect, it} from '@angular/core/testing/src/testing_internal';
|
||||
import {getDOM} from '@angular/platform-browser/src/dom/dom_adapter';
|
||||
|
||||
import {parseCookieValue} from '../../src/browser/browser_adapter';
|
||||
|
||||
export function main() {
|
||||
describe('cookies', () => {
|
||||
it('parses cookies', () => {
|
||||
const cookie = 'other-cookie=false; xsrf-token=token-value; is_awesome=true; ffo=true;';
|
||||
expect(parseCookieValue(cookie, 'xsrf-token')).toBe('token-value');
|
||||
});
|
||||
it('handles encoded keys', () => {
|
||||
expect(parseCookieValue('whitespace%20token=token-value', 'whitespace token'))
|
||||
.toBe('token-value');
|
||||
});
|
||||
it('handles encoded values', () => {
|
||||
expect(parseCookieValue('token=whitespace%20', 'token')).toBe('whitespace ');
|
||||
expect(parseCookieValue('token=whitespace%0A', 'token')).toBe('whitespace\n');
|
||||
});
|
||||
it('sets cookie values', () => {
|
||||
getDOM().setCookie('my test cookie', 'my test value');
|
||||
getDOM().setCookie('my other cookie', 'my test value 2');
|
||||
|
Reference in New Issue
Block a user