AMcoder - javascript, python, java, html, php, sql

Ինչու՞ մենք չենք նշում ռեժիմը՝ cors, երբ օգտագործում ենք fetch-ը, երբ լռելյայնը no-cors է, բայց այն դեռ աշխատում է: [կրկնօրինակ]

fetch()-ի առանձնահատկությունները, որոնք նշված են այս կերպ fetch()-ի միջոցով.

fetch("https://pk.example/berlin-calling.json", {mode:"cors"})
  .then(res => {
    if(res.headers.get("content-type") &&
       res.headers.get("content-type").toLowerCase().indexOf("application/json") >= 0) {
      return res.json()
    } else {
      throw new TypeError()
    }
  }).then(processJSON)

Սա առաջին անգամն է, որ տեսնում եմ {mode:"cors"}-ը, և բնութագրերն ասում են, որ կանխադրվածն է՝ {mode:"no-cors"}, բայց այն չօգտագործելը լավ է աշխատում:

Դեմո. https://codesandbox.io/s/lucid-leaf-y9v25?file=/src/App.js

Ինչո՞ւ է, որ մենք չենք օգտագործում {mode:"cors"}-ը և այն դեռ աշխատում է խաչաձև ծագմամբ:


Պատասխանները:


1

Fetch API-ն կանչում է Request կառուցողին ներքին, և հարցումով:

mode. ռեժիմը, որը ցանկանում եք օգտագործել հարցման համար, օրինակ՝ cors, no-cors, same-origin կամ navigate: Լռելյայնը cors է:

Այսպիսով, կարիք չկա նշել { mode: "cors" } fetch-ով, դա լռելյայն է:

բնութագրերը ասում են, որ լռելյայն է. {mode:"no-cors"}

Դա միայն լռելյայն է որոշ ռեսուրսների համար, բացառությամբ Fetch-ի և Request-ի: Ինչպես MDN-ն ասում է.

Օրինակ, երբ Request օբյեկտը ստեղծվում է Request.Request կոնստրուկտորի միջոցով, այդ Request-ի համար ռեժիմի հատկության արժեքը սահմանվում է cors:

Այնուամենայնիվ, հարցումների համար, որոնք ստեղծված են այլ, քան Request.Request կոնստրուկտորը, no-cors-ը սովորաբար օգտագործվում է որպես ռեժիմ; օրինակ՝ ներկառուցված ռեսուրսների համար, որտեղ հարցումը սկսվում է նշագրումից, եթե առկա չէ crossorigin հատկանիշը, հարցումը շատ դեպքերում կատարվում է օգտագործելով no-cors ռեժիմը, այսինքն՝ <link> կամ <script> տարրերի համար (բացառությամբ այն դեպքերի, երբ օգտագործվում են մոդուլների հետ: ), կամ <img>, <audio>, <video>, <object>, <embed>, or <iframe> տարր:

23.03.2021
  • Ամեն ինչ մի փոքր ավելի պարզ դարձնելու համար ներքին fetch գործողությունը կանչվում է շատ վայրերում, GlobalScope.fetch() մեթոդը միայն մեկն է: Սրանք. 23.03.2021
  • @Kaiido և CertainPerformance, գիտե՞ք stackoverflow.com/questions/66727673/: 23.03.2021
  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..