What is CORS?

Поділитися
Вставка
  • Опубліковано 21 сер 2024
  • CORS - Cross Origin Resource Sharing allows us to relax the security applied to an API. By default the Single Origin Policy applies and a website can only make calls to its own origin. In the case though where you have a sub domain or even some third party sites that need access to you API CORS allows us to provide this to just those specific sites without having to open up the API to all origins. In this tutorial video we look at some example APIs on the web today and how they handle CORS.
    swapi.co/
    api.chucknorri...
    CORS will add the the response header [access-control-allow-origins] and specify which origins are to be permitted access. This can include a wildcard, which is how the above 2 sites handle this.
    Then create our own sample API and show how to add CORS headers to allow access from other Origins. The example is created in dotnet core within Visual Studio.
    It should be noted that CORS and SOP is something applied by web browsers and does not take effect in other applications. So a node console app would be able to access an API even though it is not from the same origin.
    P.S Just joined buy me a coffee :-)
    www.buymeacoff...

КОМЕНТАРІ • 100

  • @jeroincababat565
    @jeroincababat565 27 днів тому +1

    I appreciate that you didn't cut the video when you encountered an error. It demonstrates what happens in real-world coding.

  • @mib141345
    @mib141345 3 роки тому +23

    You explained in 13 mins what I spent hours reading and not comprehending. Thanks!

  • @Hamza_lachgar
    @Hamza_lachgar 19 днів тому

    Thanks for this amazing tutorial. it clarifies my knowledge about CORS

  • @tedisrozenfelds7630
    @tedisrozenfelds7630 2 роки тому +7

    I liked that you failed couple of times and then debugged your own code. That actually showed some common mistakes that can be made and should be avoided!

  • @giorgidzidziguri610
    @giorgidzidziguri610 10 місяців тому +1

    best tutorial out there

  • @maspoetry1
    @maspoetry1 3 роки тому +3

    i merge to the crowd, great video. thanks. I like when you solve the problems in real time, without editing.

  • @tajsec498
    @tajsec498 2 роки тому +3

    whole day I was struggling with this :)) your explanation was clearrr, thanksss

  • @user-ii5lr1td8h
    @user-ii5lr1td8h 20 днів тому

    Watched once subscribed twice.

  • @mujthabahassan7614
    @mujthabahassan7614 4 роки тому +1

    Thanks a lot, I was scratching my head a lot over this but you explained it briefly yet comprehensively

    • @Ashotofcode
      @Ashotofcode  4 роки тому

      Hi Mujthaba, glad it was helpful 😀

  • @suryakiran2207
    @suryakiran2207 4 роки тому +6

    More simplified, thanks a lot for great explanation.

  • @dhruvpatel6937
    @dhruvpatel6937 3 місяці тому +1

    Very clear explanation, thank you kind sir!

  • @joespinelli3604
    @joespinelli3604 4 роки тому +4

    Awesome stuff! Thanks for being so clear and the example was very easy to follow:)

  • @micahnewsum3667
    @micahnewsum3667 3 роки тому +1

    Props to this guy for live coding.

  • @ArijeetSarkar7
    @ArijeetSarkar7 3 роки тому +2

    It helped me understand what is CORS and I solved a real world problem. The problem was the origin doesn't support any headers and I was sending one. After I removed, it started working.

    • @Ashotofcode
      @Ashotofcode  3 роки тому

      Excellent, glad it helped Arijeet :-)

  • @wesleygomes4154
    @wesleygomes4154 Рік тому +1

    man, thanks a lot for sharing this knowledge. You made this topic very clear to me now!

  • @nyplace1
    @nyplace1 Рік тому +1

    phenomenal explanation!

  • @jessandgary5940
    @jessandgary5940 Рік тому +1

    Finally, i get it! Thanks.

  • @jig4576
    @jig4576 10 місяців тому +1

    Awesome video

    • @Ashotofcode
      @Ashotofcode  10 місяців тому

      Thanks! Cheers Mark 🙂

  • @BB855036
    @BB855036 4 роки тому +2

    Great explanation. Thanks!

  • @shivarammuthukumaraswamy7164
    @shivarammuthukumaraswamy7164 3 роки тому +1

    wonderfully explained.TYSM

    • @Ashotofcode
      @Ashotofcode  3 роки тому

      Glad it was helpful Shivaram! Cheers Mark :-)

  • @ninjarogue
    @ninjarogue 3 роки тому +1

    Thank you!!! I really appreciate the video!

  • @balapraneeth9708
    @balapraneeth9708 4 роки тому +2

    Great video. Helped a lot. Thanks mate :)

  • @sabithapoladi5620
    @sabithapoladi5620 3 роки тому +1

    very good explanation

  • @ttoktassynov
    @ttoktassynov 3 роки тому +1

    well explained! thanks

  • @jamesscott-nicholson3808
    @jamesscott-nicholson3808 3 роки тому +2

    Thanks for the video, that's cleared it up for me nicely :). If CORS is something only handled by the browser, I suppose that makes it a fairly weak piece of security. Could a browser / extension be made that simply ignores CORS or injects in the necessary header?

    • @Ashotofcode
      @Ashotofcode  3 роки тому

      Thanks James, I'm not really up on the capabitilites of extensions, but they have full control so would think they would be able cause problems here yes. Cheers Mark

    • @abhijithk1397
      @abhijithk1397 3 роки тому +1

      yes, you can find extensions in chrome store that disable CORS

  • @mineralisk
    @mineralisk 4 роки тому +1

    Thanks for making the video

  • @ashwinisidhu
    @ashwinisidhu 4 роки тому +1

    shot & easy. Thanks

  • @WolfgangPedain
    @WolfgangPedain Рік тому +1

    well done

  • @arfan8544
    @arfan8544 4 роки тому +1

    Thank You very much. 🤘

    • @Ashotofcode
      @Ashotofcode  4 роки тому

      Thanks SM, glad it was useful 😀

  • @YosepRA
    @YosepRA 3 роки тому +3

    So it's all about the back-end setting up CORS headers, and the browser will try to find these headers to determine whether there's CORS violation or not.

    • @Ashotofcode
      @Ashotofcode  3 роки тому +1

      Yep that's a good summary I'd say😀

  • @louisecrowe4968
    @louisecrowe4968 3 роки тому +1

    Thanks great video :)

    • @Ashotofcode
      @Ashotofcode  3 роки тому

      Glad you liked it Louise. Cheers Mark :-)

  • @thisurathenuka8362
    @thisurathenuka8362 3 роки тому +1

    Nice explanation ❤

    • @Ashotofcode
      @Ashotofcode  3 роки тому +1

      Glad you liked it Thisura :-)

  • @unknownqweasd
    @unknownqweasd 3 роки тому +1

    it was very helpfull, thank you!

    • @Ashotofcode
      @Ashotofcode  3 роки тому

      Glad it was helpful! Cheers Mark

  • @jagadeeshg3756
    @jagadeeshg3756 4 роки тому +1

    WoW, Thank you so much!

  • @MrParanos
    @MrParanos 3 роки тому +2

    Very clear and useful, yet there is still something my mind can't put hand on : in what are CORS useful ?
    Regarding how easy it is to go arount it... :/

    • @Ashotofcode
      @Ashotofcode  3 роки тому +3

      CORS is actually more about relaxing the existing security, so by default only requests from your own site can be made, which is the same-origin policy. With CORS we can allow other sites to access also. So one good scenario is when our API is on a different domain to our website - in this case CORS will allows us to let the website access our API - as otherwise will be blocked by the same origin policy.
      Another case is simply a public API and we want to allows anyone to call it, say a weather api, by default it is restricted to just the domain it runs under, so we add CORS to relax this security and allow anyone to call it.
      So CORS itself is not something to get around - that is the same origin policy - which is pretty locked down in browsers.
      Cheers
      Mark

  • @ameyapatil1139
    @ameyapatil1139 4 роки тому +1

    Excellent ! Thanks !

  • @erdemarslan3371
    @erdemarslan3371 3 роки тому +1

    thx very clear!!

    • @Ashotofcode
      @Ashotofcode  3 роки тому

      Thanks Erdem :-) glad it was useful.

  • @anishamalynur7748
    @anishamalynur7748 4 роки тому +3

    hey quick question one of the options to fix the error was "If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled." could you explain this?

    • @Ashotofcode
      @Ashotofcode  4 роки тому

      Hi Anisha, good question, this would be if you simply wanted to check that the service existed, in that it returns a success code, but without any data. I'm not sure when this would be useful, but there are cases I guess. Cheers Mark

    • @dartme18
      @dartme18 3 роки тому

      ua-cam.com/video/pDU_jnD2XpE/v-deo.html ; different Anisha I assume :-P

  • @iQCudi
    @iQCudi 3 роки тому +1

    amazing

  • @CryptoJitsu
    @CryptoJitsu 3 роки тому +1

    Great vid, thank you! QUESTION: When the API does not send back the response header [access-control-allow-origins]... I'm assuming it's still sending back the data in the response body... because the decision to show or not is being done by the receiving browser. This seems insecure and dangerous and something a hacker could get around, no?

    • @Ashotofcode
      @Ashotofcode  3 роки тому +1

      Thanks! Good question - Yes I think you are correct in that the data will be returned - the browsers are pretty solid though so I would think safe - this takes place internally in the browser so not something you can attack with Javascript really. Cheers Mark

    • @CryptoJitsu
      @CryptoJitsu 3 роки тому

      @@Ashotofcode thanks!

  • @ganeshk8682
    @ganeshk8682 3 роки тому +1

    Thanks..

  • @daminduliyanage
    @daminduliyanage 3 роки тому

    Thank You 👍🏻👍🏻

  • @tonyj4435
    @tonyj4435 4 роки тому +1

    Thanks bro

  • @michi19935
    @michi19935 6 місяців тому

    One question - maybe anyone knows: Why can i not log out the json response one the first .then method?

  • @Derekbylck
    @Derekbylck 3 роки тому +1

    => return

    • @Ashotofcode
      @Ashotofcode  3 роки тому

      Ah yes that one gets me a lot! thanks

  • @saqlainmushrif6453
    @saqlainmushrif6453 Рік тому

    Can cors be exploited if some token is in URL?? (GET METHOD)
    Arbitrary origin is reflected in response with ACAO & ACAC but the token is in URL

  • @dartme18
    @dartme18 3 роки тому +2

    RIP, SWAPI

    • @Ashotofcode
      @Ashotofcode  3 роки тому +1

      D'oh yep it has died!

    • @dartme18
      @dartme18 3 роки тому +1

      @@Ashotofcode Someone posted a duplicate pretty quickly after SWAPI died (that was six months ago I think?). Our company used SWAPI for interview exercises, so we were happy to see the replacement!

    • @Ashotofcode
      @Ashotofcode  3 роки тому +1

      @@dartme18 Ah yes, swapi.dev, cool thanks!

  • @smashed5826
    @smashed5826 4 роки тому +4

    The explanation was not deep enough, in this video you just explianed CORS is browser security policy stuff and seeing you tried it out for direct access on browser and via ajax call. It could be deeper to explain why browser needs this; what kind of attacks could be implemented if no this security policy on browser; What headers needs to be added to allow browser calls a cors resource, different browsers or same browser with different versions treat different headers to allow CORS; server side API header settings to control the access the resource in different scenarios etc.

  • @JulienReszka
    @JulienReszka 3 роки тому

    audio is very low volume, I wish it wasn't that low

  • @ValentinTruta
    @ValentinTruta 3 роки тому +2

    Arrow functions return by default if code is on the same line.

  • @addtyu6176
    @addtyu6176 3 роки тому +5

    I closed the video immediately after seeing Microsoft Edge being used....

  • @trumbaron
    @trumbaron Рік тому

    Confusing for me...

  • @aravind4444
    @aravind4444 3 роки тому

    please explain with diagram

  • @ramiz3570
    @ramiz3570 4 роки тому +1

    +

  • @ronaldlogan3525
    @ronaldlogan3525 3 роки тому +2

    very poorly explained, uses tools people may not be familiar with, the actual subject is almost ignored