ਡਿਵੈਲਪਰ CORS ਨੂੰ ਕਿਉਂ ਨਹੀਂ ਸਮਝਦੇ
CORS ਵੈੱਬ ਡਿਵੈਲਪਮੈਂਟ ਵਿੱਚ ਸਭ ਤੋਂ ਵੱਧ ਗਲਤ ਸਮਝੇ ਜਾਣ ਵਾਲੇ ਸੁਰੱਖਿਆ ਟੂਲਸ ਵਿੱਚੋਂ ਇੱਕ ਹੈ। ਬਹੁਤ ਸਾਰੇ ਡਿਵੈਲਪਰ ਸੋਚਦੇ ਹਨ ਕਿ ਇਹ ਉਹਨਾਂ ਦੇ ਸਰਵਰ ਦੀ ਰੱਖਿਆ ਕਰਦਾ ਹੈ। ਇਹ ਨਹੀਂ ਕਰਦਾ।
CORS ਯੂਜ਼ਰ ਦੀ ਰੱਖਿਆ ਕਰਦਾ ਹੈ।
ਬ੍ਰਾਊਜ਼ਰ Same-Origin Policy (SOP) ਨੂੰ ਲਾਗੂ ਕਰਦਾ ਹੈ। ਇਹ ਨੀਤੀ ਕਿਸੇ ਹਾਨੀਕਾਰਕ ਸਾਈਟ ਨੂੰ ਤੁਹਾਡੇ ਵੱਲੋਂ ਕਿਸੇ ਹੋਰ ਸਾਈਟ ਨੂੰ ਰਿਕੁਐਸਟ ਭੇਜਣ ਤੋਂ ਰੋਕਦੀ ਹੈ। CORS ਸਿਰਫ਼ ਉਹ ਤਰੀਕਾ ਹੈ ਜਿਸ ਰਾਹੀਂ ਇੱਕ ਸਰਵਰ ਬ੍ਰਾਊਜ਼ਰ ਨੂੰ ਖਾਸ ਸਾਈਟਾਂ ਲਈ ਉਸ ਨਿਯਮ ਵਿੱਚ ਢਿੱਲ ਦੇਣ ਲਈ ਕਹਿੰਦਾ ਹੈ।
ਜੇਕਰ ਤੁਹਾਡੀ ਰਿਕੁਐਸ Postman ਵਿੱਚ ਕੰਮ ਕਰਦੀ ਹੈ ਪਰ ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ ਫੇਲ ਹੋ ਜਾਂਦੀ ਹੈ, ਤਾਂ ਤੁਹਾਡੇ ਕੋਲ CORS ਦੀ ਸਮੱਸਿਆ ਹੈ। Postman ਇੱਕ ਬ੍ਰਾਊਜ਼ਰ ਨਹੀਂ ਹੈ, ਇਸ ਲਈ ਇਹ ਇਹਨਾਂ ਨਿਯਮਾਂ ਨੂੰ ਲਾਗੂ ਨਹੀਂ ਕਰਦਾ।
ਆਮ ਗਲਤੀਆਂ ਜਿਨ੍ਹਾਂ ਤੋਂ ਤੁਹਾਨੂੰ ਬਚਣਾ ਚਾਹੀਦਾ ਹੈ:
- CORS ਨੂੰ ਆਪਣੀ ਇਕਲੌਤੀ ਸੁਰੱਖਿਆ ਵਜੋਂ ਵਰਤਣਾ। CORS ਕੋਈ authentication ਨਹੀਂ ਹੈ। ਤੁਹਾਨੂੰ ਅਜੇ ਵੀ tokens, passwords, ਅਤੇ rate limiting ਦੀ ਲੋੜ ਹੈ।
- ਵਾਈਲਡਕਾਰਡ (wildcard) ਜਾਲ। ਜੇਕਰ ਤੁਹਾਨੂੰ cookies ਜਾਂ credentials ਭੇਜਣ ਦੀ ਲੋੜ ਹੈ, ਤਾਂ ਤੁਸੀਂ
Access-Control-Allow-Origin: *ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕਰ ਸਕਦੇ। ਤੁਹਾਨੂੰ ਸਹੀ ਡੋਮੇਨ ਦੀ ਸੂਚੀ ਦੇਣੀ ਚਾਹੀਦੀ ਹੈ। - preflight ਰਿਕੁਐਸਟਾਂ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰਨਾ। ਬ੍ਰਾਊਜ਼ਰ ਬਹੁਤ ਸਾਰੀਆਂ API ਕਾਲਾਂ ਤੋਂ ਪਹਿਲਾਂ ਇੱਕ ਆਟੋਮੈਟਿਕ OPTIONS ਰਿਕੁਐਸਟ ਭੇਜਦੇ ਹਨ। ਜੇਕਰ ਤੁਹਾਡਾ ਸਰਵਰ OPTIONS ਨੂੰ ਬਲੌਕ ਕਰਦਾ ਹੈ, ਤਾਂ ਤੁਹਾਡੀ ਅਸਲ ਰਿਕੁਐਸ ਫੇਲ ਹੋ ਜਾਵੇਗੀ।
- Error headers ਦੀ ਘਾਟ। ਜੇਕਰ ਤੁਹਾਡੀ API CORS headers ਤੋਂ ਬਿਨਾਂ 401 ਜਾਂ 500 error ਵਾਪਸ ਕਰਦੀ ਹੈ, ਤਾਂ ਬ੍ਰਾਊਜ਼ਰ ਅਸਲ ਗਲਤੀ ਨੂੰ ਲੁਕਾ ਦਿੰਦਾ ਹੈ। ਤੁਹਾਨੂੰ ਸਿਰਫ਼ ਇੱਕ ਆਮ CORS ਮੈਸੇਜ ਦਿਖਾਈ ਦੇਵੇਗਾ।
ਇਸ ਨੂੰ ਕਿਵੇਂ ਸੁਧਾਰਿਆ ਜਾਵੇ:
- OPTIONS ਰਿਕੁਐਸਟਾਂ ਨੂੰ ਸੰਭਾਲੋ। ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਤੁਹਾਡਾ ਸਰਵਰ preflight ਕਾਲਾਂ ਲਈ 200 ਜਾਂ 204 ਸਟੇਟਸ ਵਾਪਸ ਕਰਦਾ ਹੈ।
- Middleware ਦੀ ਵਰਤੋਂ ਕਰੋ। CORS ਨੂੰ middleware ਪੱਧਰ 'ਤੇ ਕੌਂਫਿਗਰ ਕਰੋ ਤਾਂ ਜੋ ਇਹ ਇਹ ਯਕੀਨੀ ਬਣਾਇਆ ਜਾ ਸਕੇ ਕਿ ਇਹ ਗਲਤੀਆਂ ਸਮੇਤ ਸਾਰੇ ਰਿਸਪਾਂਸਾਂ ਨੂੰ ਕਵਰ ਕਰਦਾ ਹੈ।
- Vary header ਸੈੱਟ ਕਰੋ। ਜੇਕਰ ਤੁਸੀਂ ਗਤੀਸ਼ੀਲ (dynamically) ਤੌਰ 'ਤੇ ਕਈ origins ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਨੂੰ ਆਪਣੇ ਰਿਸਪਾਂਸ ਵਿੱਚ
Vary: Originਜੋੜਨਾ ਚਾਹੀਦਾ ਹੈ। - ਸਹੀ ਟੂਲਸ ਦੀ ਵਰਤੋਂ ਕਰੋ। Node.js ਲਈ,
corspackage ਦੀ ਵਰਤੋਂ ਕਰੋ। Django ਲਈ,django-cors-headersਦੀ ਵਰਤੋਂ ਕਰੋ।
ਬ੍ਰਾਊਜ਼ਰ ਐਕਸਟੈਂਸ਼ਨਾਂ ਨਾਲ CORS ਨੂੰ ਬਾਈਪਾਸ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਨਾ ਬੰਦ ਕਰੋ। ਇਸ ਦੀ ਬਜਾਏ ਆਪਣੇ ਸਰਵਰ ਕੌਂਫਿਗਰੇਸ਼ਨ ਨੂੰ ਠੀਕ ਕਰੋ।
ਸਰੋਤ: https://dev.to/onsen/why-developers-dont-understand-cors-and-how-to-fix-it-19d5
ਵਿਕਲਪਿਕ ਲਰਨਿੰਗ ਕਮਿਊਨਿਟੀ: https://t.me/GyaanSetuAi