从本地角度项目CORS ERR到本地节点服务器的Http请求

时间:2019-01-19 11:06:08

标签: node.js angular http cors

我正在制作一个本地项目,我使用在节点服务器 localhost:4200 / 上运行的angular 6表单和在节点服务器上但在不同端口 localhost:2000上运行的nodeJs strong>

即使我已准备好nodejs接受请求,问题仍然出现CORS安全错误。

角度代码

  register(regData){
    return this.httpClient.post(this.url,regData);
  }

npm install cors --save // intall cors(NodeJs)

NodeJs

const express  = require('express')
,cors = require('cors')
,app = express();
var bodyParser = require('body-parser');

const productR = require('./routes/product');

// middleware
app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());

var originsWhitelist = [
    'http://localhost:4200',      //this is my front-end url for development
    'http://127.0.0.1:4200'
  ];
  var corsOptions = {
    origin: function(origin, callback){
          var isWhitelisted = originsWhitelist.indexOf(origin) !== -1;
          callback(null, isWhitelisted);
    },
    credentials:true
  }
  app.use(cors(corsOptions));
  app.use('/products', productR);

错误消息

  

从以下位置访问“ localhost:2000 / products / create”中的XMLHttpRequest   原产地“ http://localhost:4200”已被CORS政策禁止:跨   仅协议方案支持原始请求:http,数据,   chrome,chrome扩展名,https。

1 个答案:

答案 0 :(得分:1)

此错误消息表示您用于客户端请求的URL包含错误的协议。对于您而言,URL中根本没有协议。

因此,解决问题的方法是使用http://localhost:2000而不是localhost:2000

协议是URL的重要组成部分,因为协议之间存在很大差异。例如,您的URL看起来像file:///localhost...ftp://localhost...,依此类推。因此最好始终直接定义它。