我正在制作一个本地项目,我使用在节点服务器 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。
答案 0 :(得分:1)
此错误消息表示您用于客户端请求的URL包含错误的协议。对于您而言,URL中根本没有协议。
因此,解决问题的方法是使用http://localhost:2000
而不是localhost:2000
。
协议是URL的重要组成部分,因为协议之间存在很大差异。例如,您的URL看起来像file:///localhost...
或ftp://localhost...
,依此类推。因此最好始终直接定义它。