zoukankan      html  css  js  c++  java
  • nodejs中利用cors解决跨域方法

    在进行编程获取别的网站数据或者在同一局域网下向其他IP地址提交和获取数据时,都会发生跨域错误,在进行express框架进行服务器端编程,我常用以下方法解决跨域问题:

    首先下载模块

    # Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。使用 Express 可以快速地搭建一个完整功能的网站
    
    npm i express 或者 npm install express # 首先安装服务器模块
     
    npm i cors 或者 npm install cors # 再安装解决跨域模块
    
    npm i axios  # 用来发送请求

    然后引入模块

    # 引入安装的两个模块
    const express = require('express');
    const cors = require('cors');
    const app = express(); # 初始化模块创建个对象

    最后使用模块

    app.use(express.json());       # 解析json编码数据
    app.use(express.urlencoded()); # 解析url编码的数据
    app.use(cors());  #  不加上这句代码跨域访问时会出现错误,加上就不会出现跨域错误情况
    
    # 进行各种方式的请求, 第一个参数都是路由,提供给前端的接口做代理用,以post方式举例,提供一个代理服务器
    # 用nodejs请求数据然后把数据返回给前端就行
    app.post("/api", (req, res) => {
        const { url } = req.body;
        // console.log(req.body);
        axios.get(url)
            .then(result => {
                res.json(result.data);
            })
            .catch(err => {
                console.error(err);
            })
    })
    
    # 第一个参数是端口号
    app.listen(3000, ()=>{
        console.log("运行在3000端口")
    });
    
    # 前端通过访问后端提供的接口
    $.post("后端接口", 
    # 把需要请求数据的网址传给nodejs后端
    { url: "要请求数据的网址" }) 
      .then(res => {
          console.log(res)  # 最后后端把请求的数据返回给前端,这样就解决了跨域,但是是由后端解决的
      })
      .catch(err => {
          console.error(err);
      })

    解决跨域问题一般都是服务器端常做的,这种解决跨域方式自认为感觉比较简单,就是安装cors模块然后使用下即可,不需要做其他配置。

  • 相关阅读:
    [NOI2019]回家路线(最短路,斜率优化)
    LOJ6686 Stupid GCD(数论,欧拉函数,杜教筛)
    Codeforces Global Round 4 题解
    CF908G New Year and Original Order(DP,数位 DP)
    [BJOI2019]光线(DP)
    CF1194F Crossword Expert(数论,组合数学)
    SPOJ31428 FIBONOMIAL(斐波那契数列)
    Codeforces Round 573 (Div.1) 题解
    [THUPC2018]弗雷兹的玩具商店(线段树,背包)
    数学基础
  • 原文地址:https://www.cnblogs.com/zhangyezi/p/13841591.html
Copyright © 2011-2022 走看看