簡體   English   中英

Nodejs express cors錯誤,在客戶端和服務器中都設置了標頭

[英]Nodejs express cors error, headers are set in both client and server

我已經構建了一個 NodeJS/ExpressJS 應用程序,並將其部署到 Heroku,我還在另一個域上部署了一個非常基本的 html 頁面,因為這就是我將在現實世界中使用它的方式。 但是無論我嘗試什么,我都會不斷收到相同的 cors 錯誤。

這是我的節點應用程序

 const express = require('express'); const fs = require('fs'); const http = require('http'); const path = require('path'); const handlebars = require('handlebars'); const puppeteer = require('puppeteer'); const bodyParser = require('body-parser'); const app = express(); require('dotenv').config() app.use(express.json()); app.unsubscribe(bodyParser.json()); app.set('view engine', 'html') app.use(function(req, res, next) { res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Headers', 'Origin,X-Requested-With,Content-Type,Accept,content-type,application/json'); next(); }); app.all('/export/pdf', (req, res) => { (async () => { // PDF Generator Logic.... res.send(buffer) })() }) const server = http.createServer(app); server.listen(process.env.PORT || 3000, err => { console.log(err || `Server listening on port ${process.env.PORT}`); });

這是發送請求的客戶端..

 function handlePDF(body) { var req = new XMLHttpRequest(); var url = 'mydomain.com/export/pdf'; body = JSON.stringify(body); req.open("POST", url, true); req.responseType = 'blob'; req.setRequestHeader('Access-Control-Allow-Origin', '*'); req.setRequestHeader('Content-Type', 'application/json'); req.onload = function (e) { if (req.readyState === 4) { if (req.status === 200) { console.log(req); } else { console.error(req.statusText); } } }; req.onerror = function (e) { console.error(req.statusText); } req.send(body); }

如您所見,我在客戶端設置了請求標頭,也在我的路由之前設置了 express,如類似問題中所述。

我也嘗試過使用 npm 包 cors 並將其傳遞到我的路線中,如其文檔中所述,但這也沒有用。 我曾嘗試從客戶端請求中刪除標頭,認為它將完全由服務器端處理,因為我可以完全控制它,但這也行不通。

我覺得我已經嘗試了一切,有更多節點/快遞經驗的人能看出我哪里出錯了嗎?

我通過使用獲得了您發布的代碼

var url = "http://example.com/export/pdf"

代替

var url = "example.com/export/pdf

此外,無需在客戶端設置 CORS 標頭。 CORS 是瀏覽器實現的安全功能。 它僅取決於服務器發送的標頭,而不取決於客戶端發送的標頭。 在客戶端設置它們是沒有意義的。 有關更多信息,很好地解釋了它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM