当前位置: 首页 > 知识库问答 >
问题:

本地主机上带角度的NodeJS Express:被CORS飞行前阻止

荀俊迈
2023-03-14

我已经竭尽全力尝试了这些帖子中给出的所有解决方案:

当试图从REST API获取数据时,请求的资源上不存在访问-控制-允许-起源标头

AngularJS:请求的资源上不存在“Access Control Allow Origin”标头

如何使用express启用cors nodejs?

我曾尝试使用cors,这似乎是一种流行的解决方案,但我仍然遇到以下错误:

Access to XMLHttpRequest at 'http://localhost:3000/email' from origin 'http://localhost:63342' has been blocked by CORS policy: Method GET' is not allowed by Access-Control-Allow-Methods in preflight response.

这是我的服务器端(NodeJS)设置:尝试#1(没有cors模块)

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var cors = require('cors')
var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

function setupCORS(req, res, next) {
  res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
  res.header('Access-Control-Allow-Headers', 'X-Requested-With, Content-type,Accept,X-Access-Token,X-Key');
  res.header('Access-Control-Allow-Origin', '*');
  if (req.method === 'OPTIONS') {
    res.status(200).end();
  } else {
    next();
  }
}
app.all('/*', setupCORS);


app.use('/', indexRouter);
app.use('/users', usersRouter);

尝试#2:(使用“cors”模块)

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var cors = require('cors')
var app = express();
app.use(cors());


// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', indexRouter);
app.use('/users', usersRouter);

这些都不起作用,我不知道如何解决这个问题。我正在运行服务器localhost,这就是我如何在Angular中进行GET调用:

$scope.getAllCustomerEmails = function() {
        $scope.textBox= "getAllCustomerEmails";

        $http({
            method: "GET'",
            url: "http://localhost:3000/email"
        }).then(function successCallback(response) {
            //console.log("/email response: ", response);
            $scope.textBox = response;

        }, function errorCallback(response) {
            $scope.textBox = "GET Error";
        });
    };

任何帮助都非常感谢。

共有1个答案

韦知
2023-03-14

我想这会帮助你...

在与package.json文件并行的应用程序根目录下,创建一个新文件proxy.config.json

{
   "/api*": {
     "target":"http://localhost:8080", //Add Your Backend url here
     "secure":false,
     "logLevel":"debug"
   }
}

现在,在package.json文件中,在脚本中添加这个to start方法。

"scripts": {
    "start":"ng serve --proxy-config proxy.config.json",
    "test":"ng test"
}
 类似资料:
  • 大家好,, 我的用户注册应用程序有问题,希望你们能帮我弄清楚发生了什么: 我使用的是MongoDb、Express、Angular和NodeJs,这就是它在app.js中的外观(我还包括Firefox和Chrome中显示的错误截图)。先谢谢你

  • 我已经创建了一个应用程序,使用角和springboot进行Spring安全的基本身份验证,但我得到401错误...我是springboot新手 “从源'http://localhost:4200'访问'http://localhost:8080/hello-world/path-variable/MSD'的XMLHttpRequest已被CORS策略阻止:对预检请求的响应未通过访问控制检查:它没有

  • 在asp.net核心中,我可以使用中间件在某些方法上启用CORS,如下所述 我想知道是否可以为任何方案和上的任何端口启用CORS(仅用于测试目的)。我尝试了通配符,它不起作用

  • 我正在为我的应用程序使用webpack angular2初学者工具包(https://github.com/angularclass/angular2-webpack-starter),现在我遇到了一个问题。 我试着打个电话 如何使JSON总是这样? 如何用CORS修复此问题?

  • 我有一个RMI服务器在本地主机上运行,导出类型的对象: 然后我想启动一个客户端并获取该对象的存根。似乎找到了注册表,但随后在块中抛出了: java.rmi.NotBoundexception:M在sun.rmi.registry.registryimpl.lookup(registryimpl.java:136)在sun.rmi.server.unicastserverref.olddispatc