एक्सप्रेस द्वारा प्रदान की जाने वाली लिपियों पर सक्षम होने के लिए मुझे CORS सेट करना होगा। मैं सार्वजनिक / परिसंपत्तियों के लिए इन लौटी प्रतिक्रियाओं में हेडर कैसे सेट कर सकता हूं?
एक्सप्रेस द्वारा प्रदान की जाने वाली लिपियों पर सक्षम होने के लिए मुझे CORS सेट करना होगा। मैं सार्वजनिक / परिसंपत्तियों के लिए इन लौटी प्रतिक्रियाओं में हेडर कैसे सेट कर सकता हूं?
जवाबों:
एक्सप्रेस: कोर में हैंडलिंग के लिए npm पर कम से कम एक मिडलवेयर है । [देखें @mscdex उत्तर]
यह एक्सप्रेसजेएस डीओसी से कस्टम रिस्पांस हेडर सेट करने का तरीका है
res.set(field, [value])
हेडर फ़ील्ड को मान पर सेट करें
res.set('Content-Type', 'text/plain');
या एक साथ कई फ़ील्ड सेट करने के लिए ऑब्जेक्ट पास करें।
res.set({
'Content-Type': 'text/plain',
'Content-Length': '123',
'ETag': '12345'
})
के रूप में उतारा गया
res.header(field, [value])
res.write('content')
?
res.set
मेरे लिए काम नहीं किया, लेकिन cors
मिडिलवेयर ने ठीक ही किया।
यह कितना कष्टप्रद है।
ठीक है अगर किसी को अभी भी समस्या हो रही है या सिर्फ एक और पुस्तकालय जोड़ना नहीं चाहता है। आपको बस अपने मार्गों से पहले कोड के इस मध्य वेयर लाइन को रखना होगा।
Cors उदाहरण
app.use((req, res, next) => {
res.append('Access-Control-Allow-Origin', ['*']);
res.append('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.append('Access-Control-Allow-Headers', 'Content-Type');
next();
});
// Express routes
app.get('/api/examples', (req, res)=> {...});
आप इसे कॉर्स का उपयोग करके कर सकते हैं। cors आपकी CORS प्रतिक्रिया को हैंडल करेगा
var cors = require('cors')
app.use(cors());
आप एक मिडलवेयर भी जोड़ सकते हैं कि कॉर्स हेडर जोड़ने के लिए, कुछ इस तरह से काम करेगा:
/**
* Adds CORS headers to the response
*
* {@link https://en.wikipedia.org/wiki/Cross-origin_resource_sharing}
* {@link http://expressjs.com/en/4x/api.html#res.set}
* @param {object} request the Request object
* @param {object} response the Response object
* @param {function} next function to continue execution
* @returns {void}
* @example
* <code>
* const express = require('express');
* const corsHeaders = require('./middleware/cors-headers');
*
* const app = express();
* app.use(corsHeaders);
* </code>
*/
module.exports = (request, response, next) => {
// http://expressjs.com/en/4x/api.html#res.set
response.set({
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'DELETE,GET,PATCH,POST,PUT',
'Access-Control-Allow-Headers': 'Content-Type,Authorization'
});
// intercept OPTIONS method
if(request.method === 'OPTIONS') {
response.send(200);
} else {
next();
}
};
service.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
next();
});
@ क्लोड का जवाब सही है।
हालाँकि, आप अपने हेडर को दूसरों के लिए सुलभ बनाने के लिए एक और प्रतिक्रिया हेडर सेट करने वाले हैं।
उदाहरण:
सबसे पहले, आप प्रतिक्रिया शीर्षक में 'पृष्ठ-आकार' जोड़ते हैं
response.set('page-size', 20);
फिर, आपको बस अपने हेडर को उजागर करना है
response.set('Access-Control-Expose-Headers', 'page-size')
javascript res.set("...","..."); res.set("...","....");
अब आप उन 2 हेडर को कैसे उजागर करते हैं?
javascript Access-Control-Expose-Headers: * // or Access-Control-Expose-Headers: <header-name>, <header-name>, ...
res
ऑब्जेक्ट में सेट किया है। जब मैं इस सामग्री को देखने की कोशिश करता हूं तो मैं अपरिभाषित हो जाता हूंres.headers
;