代码之家  ›  专栏  ›  技术社区  ›  Ali

从本地角度项目cors err向本地节点服务器发出的HTTP请求

  •  0
  • Ali  · 技术社区  · 5 年前

    我正在做一个本地项目,我使用在节点服务器上运行的Angular6表单 本地主机:4200 和在节点服务器上但在不同端口上运行的节点 本地主机:2000

    问题是获取CORS安全错误,即使我准备好了nodejs来接受请求。

    角度编码

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

    NPM安装CORS—保存 //内部CORS(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、data、 Chrome,Chrome扩展,https。

    1 回复  |  直到 5 年前
        1
  •  1
  •   Max Martynov    5 年前

    此错误消息表示用于客户端请求的URL包含不正确的协议。在您的情况下,URL中根本没有协议。

    所以,解决问题的方法是 http://localhost:2000 而不是 localhost:2000 .

    协议是URL的重要组成部分,因为协议之间存在很大的差异。例如,您的URL可能看起来像 file:///localhost... ftp://localhost... 等等。所以最好总是直接定义它。