在 express.js 中啟用 CORS

由於 node.js 通常用於構建 API,因此如果你希望能夠從不同的域請求 API,則適當的 CORS 設定可以節省生命。

在示例中,我們將為更廣泛的配置進行設定(從任何域授權所有請求型別。

在初始化 express 之後的 server.js 中:

// Create express server
const app = express();

app.use((req, res, next) => {
    res.header('Access-Control-Allow-Origin', '*');

    // authorized headers for preflight requests
    // https://developer.mozilla.org/en-US/docs/Glossary/preflight_request
    res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
    next();

    app.options('*', (req, res) => {
        // allowed XHR methods  
        res.header('Access-Control-Allow-Methods', 'GET, PATCH, PUT, POST, DELETE, OPTIONS');
        res.send();
    });
});

通常,節點在生產伺服器上的代理後面執行。因此,反向代理伺服器(如 Apache 或 Nginx)將負責 CORS 配置。

為了方便地適應這種情況,可以僅在開發時啟用 node.js CORS。

這可以通過檢查 NODE_ENV 輕鬆完成:

const app = express();

if (process.env.NODE_ENV === 'development') {
    // CORS settings
}