所以我是 Nginx 的新手,這就是我認為導致我問題的原因。我曾嘗試更改我的原始值,app.use(cors(corsOptions))但在瀏覽器控制臺中,它顯示相同的錯誤。這讓我相信這是我的 Nginx 組態檔的問題。主應用程式在埠 3000 上運行,這就是發出請求的地方。

快速后端(本地主機:3001):
const express = require("express");
const bodyParser = require("body-parser");
const cors = require("cors");
const Blockchain = require("./blockchain");
var corsOptions = {
origin: "http://localhost:3000",
optionsSuccessStatus: 200, // For legacy browser support
};
const app = express();
const coin = new Blockchain();
app.use(cors(corsOptions));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.get("/blockchain", function (req, res) {
res.json(coin);
});
app.listen(port, function () {
console.log(`Listening on port ${port}...`);
});
/etc/nginx/sites-available/config
server {
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name chalkcoin.io www.chalkcoin.io;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/chalkcoin.io/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/chalkcoin.io/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = www.chalkcoin.io) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = chalkcoin.io) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
listen [::]:80;
server_name chalkcoin.io www.chalkcoin.io;
return 404; # managed by Certbot
}
編輯:
這是來自不同瀏覽器(safari)的輸出

uj5u.com熱心網友回復:
如果這只是您的本地 nginx,您可以在您的 nginx 配置中執行此操作
add_header Access-Control-Allow-Origin *;-記住不要將其推廣到更高的環境
從控制臺,您可以運行 fetch 或通過郵遞員查看服務器是否遵守指令并在回應標頭中發送訪問控制 - 您還可以打開主機chalkcoin.io以查看指令是否正在傳遞 - nginx 可能如果在特定情況下無法設定指令,則拋出錯誤
uj5u.com熱心網友回復:
var corsOptions = {
origin: "http://chalkcoin.io",
optionsSuccessStatus: 200, // For legacy browser support
};
如果此 cors 不起作用,請嘗試使用此中間件避免在自定義中間件下方實作 cors
app.use((req, res, next) => {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader(
"Access-Control-Allow-Methods",
"OPTIONS, GET, POST, PUT, PATCH, DELETE"
);
res.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization");
next();
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/403238.html
標籤:
