এক্সপ্রেস দ্বারা পরিবেশন করা স্ক্রিপ্টগুলিতে সক্ষম হওয়ার জন্য আমাকে সিওআর সেট করতে হবে। আমি কীভাবে সর্বজনীন / সম্পত্তির জন্য ফিরে আসা প্রতিক্রিয়াগুলিতে শিরোনাম সেট করতে পারি?
এক্সপ্রেস দ্বারা পরিবেশন করা স্ক্রিপ্টগুলিতে সক্ষম হওয়ার জন্য আমাকে সিওআর সেট করতে হবে। আমি কীভাবে সর্বজনীন / সম্পত্তির জন্য ফিরে আসা প্রতিক্রিয়াগুলিতে শিরোনাম সেট করতে পারি?
উত্তর:
আছে: এক্সপ্রেসে CORS পরিচালনা করার জন্য npm উপর অন্তত একটি মিডলওয়্যার হয় Cors । [@ এসএমসিডেক্স উত্তর দেখুন]
এক্সপ্রেসজেএস ডক থেকে কাস্টম প্রতিক্রিয়া শিরোনামগুলি এভাবে সেট করা যায়
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
মিডলওয়্যারটি কৌশলটি ঠিক সঠিকভাবে করেছে।
এটি তাই বিরক্তিকর।
ঠিক আছে কারও যদি এখনও সমস্যা হয় বা কেবল অন্য লাইব্রেরি যুক্ত করতে না চায়। আপনাকে যা করতে হবে তা হ'ল আপনার রুটের আগে কোডের এই মাঝারি ওয়্যার লাইনটি স্থাপন করা।
কর উদাহরণ
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 প্রতিক্রিয়া পরিচালনা করবে
var cors = require('cors')
app.use(cors());
সংক্ষিপ্ত উত্তর:
res.setHeaders
- স্থানীয় নেড.জেএস পদ্ধতিতে কল করে
res.set
- শিরোনাম সেট করে
res.headers
- পুনরায় সেট করার জন্য একটি উপাধি
আপনি সিওআরএস শিরোনাম যুক্ত করতে মিডলওয়্যার যুক্ত করতে পারেন, এরকম কিছু কাজ করবে:
/**
* 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
;