![](/img/trans.png)
[英]No 'Access-Control-Allow-Origin' header is present on the requested resource nodejs
[英]Unable to solve this in NODE.JS, No 'Access-Control-Allow-Origin' header is present on the requested resource in (nodejs + angularjs)
我是node.js的新手,正在嘗試使用Rest API,現在我的REST API可以正常工作,但是每當我通過angularjs調用此服務時,都會出現“ access-control-allow-origin”錯誤。 但是,我在服務器端添加了此代碼:-
var express = require("express");
var app = express();
var router = express.Router();
app.use(function (req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET, OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
res.header('Access-Control-Allow-Credentials', true);
return next();
});
但是它對我不起作用,我進行了很多搜索,但沒有獲得可行的解決方案,請幫幫我。
您正在使用angular的http模塊,如果是,則Angular在實際請求之前發送預檢選項。 您的服務器應返回20倍的OPTIONS角度,以發出實際的請求。
您可以通過分別處理OPTIONS來避免這種情況,
app.use(function (req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET, OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
res.header('Access-Control-Allow-Credentials', true);
if (req.method == "OPTIONS") {
response.statusCode = 200 //although correct code should be 204,
return;
}
return next();
});
另外,更詳盡,限制更少的CORS過濾器如下所示,請根據需要使用
resp.header("Access-Control-Allow-Origin", "*");
resp.header("Access-Control-Allow-Credentials", "true");
resp.header("Access-Control-Allow-Methods", "POST, GET, PUT,PATCH, OPTIONS, DELETE");
resp.header("Access-Control-Max-Age", "3600");
resp.header("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, Authorization, Origin, Accept, Access-Control-Request-Method, Access-Control-Request-Headers");
resp.header("Access-Control-Expose-Headers", "Authorization");
瀏覽器在發出實際請求之前先發送preflight
請求。 您需要添加代碼來處理此請求,請在服務器端代碼中嘗試此操作。
const cors = require('cors')
const corsOptions = {
origin: '*'
}
app.use(cors(corsOptions))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.