REST call works with axios but not with HttpClient in an Angular 5 project












0















Service.ts code






import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Injectable({
providedIn: 'root'
})
export class ClientService {

constructor(private http: HttpClient) { }

getClients() {
return this.http.get<any>('http://localhost:8080/admin-api/client?count=15&page=0&q=', { withCredentials: true })
}
}





Component.ts code






import { Component, OnInit } from '@angular/core';
import { LazyLoadEvent } from 'primeng/api'

import { ClientService } from '../../services/client.service';


@Component({
selector: 'app-client',
templateUrl: './client.component.html',
styleUrls: ['./client.component.css']
})

export class ClientComponent implements OnInit {

constructor(private clientService: ClientService) { }

ngOnInit() {
this.loading = true

this.clientService.getClients().subscribe(data => {
console.log(data)
}, error => {
console.log(error)
})

}
}





The error I get when I run this
The browser console



I don't understand why the same request can succeed using axios but not with the HttpClient in Angular.










share|improve this question

























  • Seems CORS issue with backend API's

    – Pardeep Jain
    Nov 21 '18 at 11:25






  • 1





    You have CORS error, read some other questions about this error.

    – onetwo12
    Nov 21 '18 at 11:26











  • But the request works with axios, that is not possible if there is a CORS issue with the back end right?

    – Sameer Basil
    Nov 21 '18 at 12:08
















0















Service.ts code






import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Injectable({
providedIn: 'root'
})
export class ClientService {

constructor(private http: HttpClient) { }

getClients() {
return this.http.get<any>('http://localhost:8080/admin-api/client?count=15&page=0&q=', { withCredentials: true })
}
}





Component.ts code






import { Component, OnInit } from '@angular/core';
import { LazyLoadEvent } from 'primeng/api'

import { ClientService } from '../../services/client.service';


@Component({
selector: 'app-client',
templateUrl: './client.component.html',
styleUrls: ['./client.component.css']
})

export class ClientComponent implements OnInit {

constructor(private clientService: ClientService) { }

ngOnInit() {
this.loading = true

this.clientService.getClients().subscribe(data => {
console.log(data)
}, error => {
console.log(error)
})

}
}





The error I get when I run this
The browser console



I don't understand why the same request can succeed using axios but not with the HttpClient in Angular.










share|improve this question

























  • Seems CORS issue with backend API's

    – Pardeep Jain
    Nov 21 '18 at 11:25






  • 1





    You have CORS error, read some other questions about this error.

    – onetwo12
    Nov 21 '18 at 11:26











  • But the request works with axios, that is not possible if there is a CORS issue with the back end right?

    – Sameer Basil
    Nov 21 '18 at 12:08














0












0








0








Service.ts code






import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Injectable({
providedIn: 'root'
})
export class ClientService {

constructor(private http: HttpClient) { }

getClients() {
return this.http.get<any>('http://localhost:8080/admin-api/client?count=15&page=0&q=', { withCredentials: true })
}
}





Component.ts code






import { Component, OnInit } from '@angular/core';
import { LazyLoadEvent } from 'primeng/api'

import { ClientService } from '../../services/client.service';


@Component({
selector: 'app-client',
templateUrl: './client.component.html',
styleUrls: ['./client.component.css']
})

export class ClientComponent implements OnInit {

constructor(private clientService: ClientService) { }

ngOnInit() {
this.loading = true

this.clientService.getClients().subscribe(data => {
console.log(data)
}, error => {
console.log(error)
})

}
}





The error I get when I run this
The browser console



I don't understand why the same request can succeed using axios but not with the HttpClient in Angular.










share|improve this question
















Service.ts code






import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Injectable({
providedIn: 'root'
})
export class ClientService {

constructor(private http: HttpClient) { }

getClients() {
return this.http.get<any>('http://localhost:8080/admin-api/client?count=15&page=0&q=', { withCredentials: true })
}
}





Component.ts code






import { Component, OnInit } from '@angular/core';
import { LazyLoadEvent } from 'primeng/api'

import { ClientService } from '../../services/client.service';


@Component({
selector: 'app-client',
templateUrl: './client.component.html',
styleUrls: ['./client.component.css']
})

export class ClientComponent implements OnInit {

constructor(private clientService: ClientService) { }

ngOnInit() {
this.loading = true

this.clientService.getClients().subscribe(data => {
console.log(data)
}, error => {
console.log(error)
})

}
}





The error I get when I run this
The browser console



I don't understand why the same request can succeed using axios but not with the HttpClient in Angular.






import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Injectable({
providedIn: 'root'
})
export class ClientService {

constructor(private http: HttpClient) { }

getClients() {
return this.http.get<any>('http://localhost:8080/admin-api/client?count=15&page=0&q=', { withCredentials: true })
}
}





import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Injectable({
providedIn: 'root'
})
export class ClientService {

constructor(private http: HttpClient) { }

getClients() {
return this.http.get<any>('http://localhost:8080/admin-api/client?count=15&page=0&q=', { withCredentials: true })
}
}





import { Component, OnInit } from '@angular/core';
import { LazyLoadEvent } from 'primeng/api'

import { ClientService } from '../../services/client.service';


@Component({
selector: 'app-client',
templateUrl: './client.component.html',
styleUrls: ['./client.component.css']
})

export class ClientComponent implements OnInit {

constructor(private clientService: ClientService) { }

ngOnInit() {
this.loading = true

this.clientService.getClients().subscribe(data => {
console.log(data)
}, error => {
console.log(error)
})

}
}





import { Component, OnInit } from '@angular/core';
import { LazyLoadEvent } from 'primeng/api'

import { ClientService } from '../../services/client.service';


@Component({
selector: 'app-client',
templateUrl: './client.component.html',
styleUrls: ['./client.component.css']
})

export class ClientComponent implements OnInit {

constructor(private clientService: ClientService) { }

ngOnInit() {
this.loading = true

this.clientService.getClients().subscribe(data => {
console.log(data)
}, error => {
console.log(error)
})

}
}






node.js angular typescript axios angular-httpclient






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 21 '18 at 11:26







Sameer Basil

















asked Nov 21 '18 at 11:24









Sameer BasilSameer Basil

124




124













  • Seems CORS issue with backend API's

    – Pardeep Jain
    Nov 21 '18 at 11:25






  • 1





    You have CORS error, read some other questions about this error.

    – onetwo12
    Nov 21 '18 at 11:26











  • But the request works with axios, that is not possible if there is a CORS issue with the back end right?

    – Sameer Basil
    Nov 21 '18 at 12:08



















  • Seems CORS issue with backend API's

    – Pardeep Jain
    Nov 21 '18 at 11:25






  • 1





    You have CORS error, read some other questions about this error.

    – onetwo12
    Nov 21 '18 at 11:26











  • But the request works with axios, that is not possible if there is a CORS issue with the back end right?

    – Sameer Basil
    Nov 21 '18 at 12:08

















Seems CORS issue with backend API's

– Pardeep Jain
Nov 21 '18 at 11:25





Seems CORS issue with backend API's

– Pardeep Jain
Nov 21 '18 at 11:25




1




1





You have CORS error, read some other questions about this error.

– onetwo12
Nov 21 '18 at 11:26





You have CORS error, read some other questions about this error.

– onetwo12
Nov 21 '18 at 11:26













But the request works with axios, that is not possible if there is a CORS issue with the back end right?

– Sameer Basil
Nov 21 '18 at 12:08





But the request works with axios, that is not possible if there is a CORS issue with the back end right?

– Sameer Basil
Nov 21 '18 at 12:08












1 Answer
1






active

oldest

votes


















0














Apparently, Axios adds the "X-XSRF-TOKEN" header when it detects the "XSRF-TOKEN" cookie whereas the HttpClient in Angular doesn't.



So you have to read the value of the "XSRF-TOKEN" cookie and set it as the header "X-XSRF-TOKEN" when sending your requests.






share|improve this answer























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53411068%2frest-call-works-with-axios-but-not-with-httpclient-in-an-angular-5-project%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    Apparently, Axios adds the "X-XSRF-TOKEN" header when it detects the "XSRF-TOKEN" cookie whereas the HttpClient in Angular doesn't.



    So you have to read the value of the "XSRF-TOKEN" cookie and set it as the header "X-XSRF-TOKEN" when sending your requests.






    share|improve this answer




























      0














      Apparently, Axios adds the "X-XSRF-TOKEN" header when it detects the "XSRF-TOKEN" cookie whereas the HttpClient in Angular doesn't.



      So you have to read the value of the "XSRF-TOKEN" cookie and set it as the header "X-XSRF-TOKEN" when sending your requests.






      share|improve this answer


























        0












        0








        0







        Apparently, Axios adds the "X-XSRF-TOKEN" header when it detects the "XSRF-TOKEN" cookie whereas the HttpClient in Angular doesn't.



        So you have to read the value of the "XSRF-TOKEN" cookie and set it as the header "X-XSRF-TOKEN" when sending your requests.






        share|improve this answer













        Apparently, Axios adds the "X-XSRF-TOKEN" header when it detects the "XSRF-TOKEN" cookie whereas the HttpClient in Angular doesn't.



        So you have to read the value of the "XSRF-TOKEN" cookie and set it as the header "X-XSRF-TOKEN" when sending your requests.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Jan 24 at 4:33









        Sameer BasilSameer Basil

        124




        124
































            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53411068%2frest-call-works-with-axios-but-not-with-httpclient-in-an-angular-5-project%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            mysqli_query(): Empty query in /home/lucindabrummitt/public_html/blog/wp-includes/wp-db.php on line 1924

            How to change which sound is reproduced for terminal bell?

            Can I use Tabulator js library in my java Spring + Thymeleaf project?