zoukankan      html  css  js  c++  java
  • express和cors跨域

    使用express框架:

    Express

    Express 是一个保持最小规模的灵活的 Node.js Web 应用程序开发框架,为 Web 和移动应用程序提供一组强大的功能。

    Express 框架核心特性:
    可以设置中间件来响应 HTTP 请求。

    定义了路由表用于执行不同的 HTTP 请求动作。

    可以通过向模板传递参数来动态渲染 HTML 页面。

    首先要安装nodeJs环境

    安装 npm install express --save-dev

    以上命令会将 Express 框架安装在当前目录的 node_modules 目录中, node_modules 目录下会自动创建 express 目录。以下几个重要的模块是需要与 express 框架一起安装的:

    body-parser - node.js 中间件,用于处理 JSON, Raw, Text 和 URL 编码的数据。

    cookie-parser - 这就是一个解析Cookie的工具。通过req.cookies可以取到传过来的cookie,并把它们转成对象。

    multer - node.js 中间件,用于处理 enctype="multipart/form-data"(设置表单的MIME编码)的表单数据。

    cnpm install body-parser --save
    cnpm install cookie-parser --save
    cnpm install multer --save
    查看express的版本号:cnpm list express
    引入express

    const express = require('express')
    const app = express()

    let bodyParser = require("body-parser");


    express-generator

    express-generator可以快速的帮我们搭建项目
    全局安装 cnpm install express-generator -g
    局部安装express cnpm install express --save-dev
    创建项目:
    npm init -y
    express -e
    npm install


    Hello World
    server.js
      var express = require("express");
      var app = express();
      app.get("/",(req,res)=>{
    res.send("hello World");
    }) ;
    app.listener(8081,()=>{});
    运行 node server.js
    访问 http://localhost:8081/

    express 应用使用回调函数的参数: request 和 response 对象来处理请求和响应的数据。
    Request 对象 - request 对象表示 HTTP 请求,包含了请求查询字符串,参数,内容,HTTP 头部等属性。常见属性有:

    req.app:当callback为外部文件时,用req.app访问express的实例
    req.baseUrl:获取路由当前安装的URL路径
    req.body / req.cookies:获得「请求主体」/ Cookies
    req.fresh / req.stale:判断请求是否还「新鲜」
    req.hostname / req.ip:获取主机名和IP地址
    req.originalUrl:获取原始请求URL
    req.params:获取路由的parameters
    req.path:获取请求路径
    req.protocol:获取协议类型
    req.query:获取URL的查询参数串
    req.route:获取当前匹配的路由
    req.subdomains:获取子域名
    req.accepts():检查可接受的请求的文档类型
    req.acceptsCharsets / req.acceptsEncodings / req.acceptsLanguages:返回指定字符集的第一个可接受字符编码
    req.get():获取指定的HTTP请求头
    req.is():判断请求头Content-Type的MIME类型

    nodemon
    nodemon用来监视node.js应用程序中的任何更改并自动重启服务,非常适合用在开发环境中。
    nodemon将监视启动目录中的文件,如果有任何文件更改,nodemon将自动重新启动node应用程序。
    全局安装
    npm install -g nodemon
    本地安装
    npm install --save-dev nodemon
    启动应用
    nodemon [your node app]

    Cors:

    cnpm install express body-parser --save-dev

     server.js

    //JavaScript Document
    let express = require("express");
    let app = express();
    app.listen(3000, () => console.log("Http server is running at http://127.0.0.1:3000/"));
    
    app.use(express.static(__dirname));
    
    let bodyParser = require("body-parser");
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({extended: false}));
    app.use(bodyParser.raw());
    app.use(bodyParser.text());
    //需要跨域的url
    let allowOrigin = [
        "http://127.0.0.1:8080/",
        "http://127.0.0.1:3000/"
    ];
    
    app.use((request, response, next) => {
        let {origin} = request.headers;
        if(allowOrigin.includes(origin)) {
            response.setHeader("Access-Control-Allow-Origin", origin);
            response.setHeader("Access-Control-Allow-Credentials", true);
            response.setHeader("Access-Control-Allow-Headers", "Content-Type, Content-Length, Authorization, Accept, X-Requested-With");
            response.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, HEAD, DELETE, OPTIONS");
            response.setHeader("X-Powered-By", "3.2.1");
            if(request.method.toUpperCase() == "OPTIONS") {
                response.statusCode = 204;
                response.end();
            }
        }
        next();
    });
    
    app.use("/", require("./router"));
    
    app.all("*", (request, response) => {
        response.sendStatus(404);
    });

    router/index.js

    let express = require("express");
    let router = express.Router();
    
    router.use("/index", require("./router"));
    
    module.exports = router;
    

    router/router/index.js

    let express = require("express");
    let router = express.Router();
    router.post("/login",(req,res)=>{
        res.send("你好");
    });
    module.exports = router;
    

     在package的scripts里添加:"serve":"node server.js"

    运行:npm run serve

  • 相关阅读:
    css3-响应式布局
    css3-盒模型新增属性
    css3-弹性盒模型
    阿里天池超级码力复赛
    [状态压缩dp]Leetcode5.02双周赛 每个人戴不同帽子的方案数
    算法编程题:魔塔
    [Dijkstra贪心思想妙用]真实笔试题:传送门
    2020 力扣杯!Code Your Future 春季全国编程大赛 个人赛
    经典笔试算法题之打小怪兽
    两道经典面试算法题2020-3-20(打牌,最长上升字符串拼接)
  • 原文地址:https://www.cnblogs.com/wyryuebanwan/p/10333185.html
Copyright © 2011-2022 走看看