CORS విధానాన్ని అర్థం చేసుకోవడం
వెబ్ బ్రౌజర్లు ఒక వెబ్సైట్ (Origin) నుండి మరొక వెబ్సైట్కు అభ్యర్థనలు పంపినప్పుడు భద్రత కోసం Cross-Origin Resource Sharing (CORS) విధానాన్ని అమలు చేస్తాయి. ఒక వెబ్ అప్లికేషన్ యొక్క కోడ్ వేరొక డొమైన్ లోని వనరులను చదవగలదో లేదో బ్రౌజర్ నిర్ణయిస్తుంది. ఈ నిర్ణయం సర్వర్ నుండి వచ్చే HTTP ప్రతిస్పందన హెడర్లు పై ఆధారపడి ఉంటుంది.
ఫ్రంట్-ఎండ్ డెవలపర్లు, బ్యాక్-ఎండ్ డెవలపర్లు, API ప్లాట్ఫారమ్ డెవలపర్లు మరియు ఆపరేషన్స్ డెవలపర్లు తమ అప్లికేషన్లలో CORS లోపాలను పరిష్కరించడానికి ఈ నియమాలను ఖచ్చితంగా అర్థం చేసుకోవాలి. CORS చెకర్ సాధనం మీరు అందించిన HTTP ప్రతిస్పందన హెడర్లు మరియు అభ్యర్థన వివరాల ఆధారంగా బ్రౌజర్ ఆ అభ్యర్థనను అనుమతిస్తుందో లేదో విశ్లేషిస్తుంది.
CORS చెకర్ ఇన్పుట్లు మరియు నియమాలు
ఈ సాధనం బ్రౌజర్ ప్రవర్తనను అంచనా వేయడానికి క్రింది ఇన్పుట్లను స్వీకరిస్తుంది:
- తనిఖీ చేయాల్సిన response: వినియోగదారులు "Actual response" లేదా "Preflight response" లలో ఒకదాన్ని ఎంచుకోవచ్చు.
- HTTP ప్రతిస్పందన హెడర్లు: గరిష్టంగా 200,000 అక్షరాల పరిమితి కలిగిన టెక్స్ట్ ఇన్పుట్. Preflight response-ను తనిఖీ చేసేటప్పుడు status line-ను కూడా అతికించాలి. ఒకవేళ ఇన్పుట్ ఖాళీగా ఉంటే, "తనిఖీ చేయడానికి ముందు HTTP response headers-ను అతికించండి." అనే లోపం కనిపిస్తుంది. పరిమితి దాటితే "ఈ response అసాధారణంగా పెద్దది. దీన్ని
‹max›అక్షరాల లోపు ఉంచండి." అని, మరియు తప్పు హెడర్ లైన్ ఉంటే "Line‹line›సరైన HTTP header లేదా status line కాదు." లేదా "Line‹line›లో చెల్లని HTTP header పేరు ఉంది." అనే లోపాలు వస్తాయి. - Request Origin: అభ్యర్థన పంపే మూలం యొక్క scheme, host మరియు ఐచ్ఛిక port వివరాలు (ఉదాహరణకు
https://app.example.com). ఇది కేవలం origin లేదాnullమాత్రమే అయి ఉండాలి; URL path, query లేదా credentials ఉండకూడదు. లేనిచో "Scheme, host మరియు ఐచ్ఛిక port మాత్రమే ఉన్న Origin-ను నమోదు చేయండి; ఉదాహరణకు https://app.example.com." అనే లోపం వస్తుంది. - కోరిన method: GET, POST, OPTIONS వంటి HTTP method. చెల్లని టోకెన్ ఉంటే "చెల్లుబాటు అయ్యే HTTP method token-ను నమోదు చేయండి." అని, బ్రౌజర్ అనుమతించని మెథడ్ అయితే "fetch requests-లో
‹method›method-ను browsers అనుమతించవు." అని చూపిస్తుంది. - కోరిన header పేర్లు:
Access-Control-Request-Headersలోని పేర్లు, వీటిని కామాలు లేదా వేర్వేరు లైన్ల ద్వారా వేరు చేయవచ్చు. తప్పు పేరు ఉంటే “‹header›” చెల్లుబాటు అయ్యే HTTP request header పేరు కాదు." అనే లోపం వస్తుంది. - Credentials చేర్చండి: Cookies లేదా HTTP authentication కలిగి ఉన్న అభ్యర్థనల కోసం ఈ టోగుల్ను ఆన్ చేయాలి.
బ్రౌజర్ నిర్ణయాలు మరియు విశ్లేషణ
సాధనం ఇన్పుట్లను ప్రాసెస్ చేసిన తర్వాత క్రింది ఫలితాలలో ఒకదాన్ని ప్రదర్శిస్తుంది:
- "అతికించిన CORS response దీనిని అనుమతిస్తుంది."
- "అతికించిన CORS response దీనిని నిరోధిస్తుంది."
- "Headers సరైనవే, కానీ preflight status తెలియదు."
- "ఒక response మరియు request వివరాలను నమోదు చేసి, తరువాత CORS policy-ను తనిఖీ చేయండి." (వివరాలు లేనప్పుడు)
- "CORS policy-ను తనిఖీ చేయడానికి ఒక response-ను అతికించండి." (ప్రారంభ స్థితి)
ఇన్పుట్లలో ఏవైనా తప్పులు ఉంటే "గుర్తించిన input-ను సరిచేసి మళ్లీ ప్రయత్నించండి. ప్రయత్నించండి." అనే సందేశం కనిపిస్తుంది.
CORS హెడర్ల ప్రాసెసింగ్ నియమాలు
బ్రౌజర్ నిర్ణయం వెనుక ఉన్న కారణాలను ఈ సాధనం స్పష్టంగా వివరిస్తుంది. ఈ విశ్లేషణ క్రింది నియమాల ఆధారంగా జరుగుతుంది:
Origin మరియు Credentials నియమాలు
- ఖచ్చితమైన సరిపోలిక:
Access-Control-Allow-Originహెడర్ విలువ అభ్యర్థన Origin తో ఖచ్చితంగా సరిపోలితే, "Access-Control-Allow-Origin,‹origin›-తో ఖచ్చితంగా సరిపోలుతుంది." అనే వివరణ వస్తుంది. - వైల్డ్కార్డ్ పరిమితులు: Credentials చేర్చినప్పుడు
Access-Control-Allow-Originవిలువ*(వైల్డ్కార్డ్) కాకూడదు. ఒకవేళ అలా ఉంటే "Credentials చేర్చినప్పుడు Access-Control-Allow-Origin * గా ఉండకూడదు." అని నిరోధించబడుతుంది. Credentials లేనప్పుడు మాత్రమే వైల్డ్కార్డ్ అనుమతించబడుతుంది. - బహుళ విలువలు:
Access-Control-Allow-Originలో కామాలతో కూడిన బహుళ విలువలు ఉంటే అది చెల్లనిదిగా పరిగణించబడుతుంది, మరియు "Access-Control-Allow-Origin లో చెల్లని value ఉంది:‹value›." అని చూపిస్తుంది. - Credentials హెడర్: Credentials ఉన్న అభ్యర్థనలకు
Access-Control-Allow-Credentials: trueఖచ్చితంగా ఉండాలి. లేనిచో "Credentials ఉన్న request-కు Access-Control-Allow-Credentials: true అవసరం." అనే కారణంతో అభ్యర్థన నిరోధించబడుతుంది.
Preflight మరియు Methods నియమాలు
- Status Code: Preflight response విజయవంతం కావడానికి 2xx status code అవసరం. Status line లేకపోతే "HTTP status line అతికించలేదు, కాబట్టి అవసరమైన 2xx preflight status-ను తనిఖీ చేయలేము." అని ఫలితం వస్తుంది.
- Safelisted Methods: GET, HEAD, POST వంటి CORS-safelisted మెథడ్లకు preflight అనుమతి అవసరం లేదు. ఇతర మెథడ్లు
Access-Control-Allow-Methodsలో స్పష్టంగా అనుమతించబడాలి. Credentials ఉన్నప్పుడు మెథడ్స్ కోసం వైల్డ్కార్డ్ పనిచేయదు.
Headers మరియు Authorization నియమాలు
- Authorization ప్రత్యేక నియమం:
Access-Control-Allow-Headers: *ఉన్నప్పటికీ,Authorizationహెడర్ను బ్రౌజర్ వైల్డ్కార్డ్ కింద అనుమతించదు. దీనిని "Authorization స్పష్టంగా జాబితా చేయాలి; Access-Control-Allow-Headers: * దానిని కవర్ చేయదు." అనే నియమం ద్వారా సాధనం వివరిస్తుంది.
| హెడర్ పేరు | Credentials ఉన్నప్పుడు ప్రవర్తన | Credentials లేనప్పుడు ప్రవర్తన |
|---|---|---|
Access-Control-Allow-Origin |
* అనుమతించబడదు, ఖచ్చితమైన Origin అవసరం |
* అనుమతించబడుతుంది |
Access-Control-Allow-Headers |
వైల్డ్కార్డ్ పనిచేయదు, ప్రతి హెడర్ పేర్కొనాలి | * పనిచేస్తుంది (Authorization మినహా) |
Access-Control-Allow-Credentials |
ఖచ్చితంగా true ఉండాలి |
ఈ నిర్ణయాన్ని ప్రభావితం చేయదు |
గోప్యత మరియు ప్రాసెసింగ్ విధానం
ఈ సాధనం పూర్తిగా క్లయింట్ వైపు మాత్రమే పనిచేస్తుంది. మీరు నమోదు చేసే HTTP ప్రతిస్పందన హెడర్లు మరియు అభ్యర్థన వివరాలు మీ బ్రౌజర్లోనే ప్రాసెస్ చేయబడతాయి. BroBroGo ఈ డేటాను సర్వర్కు అప్లోడ్ చేయదు లేదా ఎక్కడా సేవ్ చేయదు.
ఈ సాధనం కేవలం మీరు అందించిన హెడర్లు మరియు వివరాలను మాత్రమే విశ్లేషిస్తుంది. ఇది సర్వర్ను నేరుగా సంప్రదించదు, URLలను చదవదు, కుకీలను సెట్ చేయదు, DNS/TLS తనిఖీ చేయదు లేదా సర్వర్ కాన్ఫిగరేషన్లను మార్చదు.
తరచుగా అడిగే ప్రశ్నలు (FAQ)
Actual response-ను అతికించాలా, preflight response-ను అతికించాలా?
ఒక response-ను browser code చదవగలదో లేదో చూడటానికి Actual response ఉపయోగించండి. తరువాతి method మరియు కోరిన header పేర్లను ఆమోదించే OPTIONS సమాధానం కోసం Preflight response ఉపయోగించండి.
Credentials ఉన్నప్పుడు wildcard ఎందుకు విఫలం కావచ్చు?
Cookies లేదా HTTP authentication చేర్చినప్పుడు, అనుమతించిన Origin అభ్యర్థన Origin-తో ఖచ్చితంగా సరిపోలాలి. అనుమతించిన methods మరియు headers కోసం wildcards కూడా వాటి wildcard అర్థాన్ని కోల్పోతాయి.
అనుమతించిన ఫలితం live request పనిచేస్తుందని రుజువు చేస్తుందా?
లేదు. ఈ ఫలితం అతికించిన response మరియు ఇక్కడ నమోదు చేసిన request వివరాలకు మాత్రమే వర్తిస్తుంది. Redirects, cached responses, మారే server నియమాలు, browser extensions మరియు preflight తరువాత వచ్చే actual response ఫలితాన్ని మార్చవచ్చు.