node.js搭建代理服务器实现跨域

article/2025/11/9 11:33:04

node.js搭建代理服务器实现跨域


前后端分离,本地前端开发调用接口会有跨域问题,一般有以下3种解决方法:

  1. 后端接口打包到本地运行(缺点:每次后端更新都要去测试服下一个更新包,还要在本地搭建java运行环境,麻烦)
  2. CORS跨域:后端接口在返回的时候,在header中加入’Access-Control-Allow-origin’:* 之类的。
  3. 用nodejs搭建本地http服务器,并且判断访问接口URL时进行转发,完美解决本地开发时候的跨域问题。

node.js提供模块:node-http-proxy来实现http代理

源码如下:

/*** Created by zhaohuan on 2017/4/19.*/
// (function creatserver(pathurl) {var http=require('http');var fs=require('fs');var mime=require('mime');var urls=require('url');var pathurl='/Users/zhaohuan/login';//以上路径为html,css,js的路径//mark:在终端输入pwd获取路径var httpProxy = require('http-proxy');var proxy = httpProxy.createProxyServer({target: 'http://139.224.235.133:8099/',   //接口地址//创建一个代理,从以上路径获取数据。
});//本地客户端请求服务器端的数据(跨域):客户端向代理服务器发起请求,
代理服务器接到请求,向目标服务器发起请求。http.createServer(function (req,res) {var url=urls.parse(req.url).pathname;//req.url:localhost:8116/index.html//url:/index.htmlvar realPath=pathurl+url;if(url.indexOf("user") > 0||url.indexOf("login") > 0){//当请求为user,login需要代理服务器请求远端服务器数据proxy.web(req, res);return;}fs.readFile(realPath,function (err,data) {if(data){res.writeHead(200,{'Content-type':mime.lookup(realPath)//获取请求文件后缀                   });res.end(data);}});}).listen(8888);console.log('服务器启动');

mime.lookup(realPath)

以上是使用mime.lookup(realPath)获取的文件后缀。

对应的客户端js代码如下:

//使用ui.router实现路由机制var loginapp = angular.module('loginapp', ['ui.router']);loginapp.controller('routselect', function ($scope) {$scope.message = '配置完成';});loginapp.config(function ($stateProvider, $urlRouterProvider) {$urlRouterProvider.when('/', '/login')//默认页面.otherwise("/login");//重定向$stateProvider.state('login', {url: "/login",templateUrl: 'index1.html',controller: 'loginC'}).state('success', {url: "/success",templateUrl: 'index2.html',controller: 'loginsuccessC'});});loginapp.controller('loginC', function ($scope, $state,$http) {
//验证码(因为此页面实现的是登陆获取权限操作数据库)$scope.unicode = (function () {var codes = [];//数字for (var i = 48; i < 57; codes.push(i), i++);//大写字母for (var i = 60; i < 90; codes.push(i), i++);//小写字母for (var i = 97; i < 122; codes.push(i), i++);var arr = [];for (var i = 0; i < 4; i++) {var index = Math.floor(Math.random() * (61) + 0);var char = String.fromCharCode(codes[index]);arr.push(char);}var code = arr.join("");$scope.yzm = code;})();$scope.ajax = function (user, password, yzm) {if (yzm == $scope.yzm) {$http({method: 'GET',url: 'login',//对应的代理地址通过代理获取跨域接口http://139.224.235.133:8099/loginheaders: {"Authorization": "Basic " + btoa(user + ":" + password)},}).then(function successCallback(response) {console.log(response);$state.go('success');//页面跳转//注意:使用路由是文件名不可用中文})}else {alert('请输入正确的验证码')}}});

http://chatgpt.dhexx.cn/article/9JcK0XYP.shtml

相关文章

apache 搭建ip代理服务器

前期准备 windows / LinuxApache 这里就不教如何安装apache了&#xff0c;需要的可以查询如何安装。 apache 配置 找到 httpd.conf 文件&#xff0c;apache的安装目录下 Apache2.4.39\conf\httpd.conf 找到下面几行配置&#xff0c;默认是注释了的&#xff0c;你需要把 # 号…

在CentOS 7上搭建代理服务器(Socks 5)

安装环境配置 1. yum install gcc 2. yum install openldap-devel 3. yum install pam-devel 4. yum install openssl-devel 安装Socks 5 wget http://jaist.dl.sourceforge.net/project/ss5/ss5/3.8.9-8/ss5-3.8.9-8.tar.gz 解压ss5-3.8.9-8.tar.gz tar -xzvf ss5-3.8.9…

10分钟搭建linux代理服务器

介绍 关于搭建代理服务器的方法&#xff0c;我也是刚刚接触&#xff0c;从网上找了一些能够行得通的方法来给大家做个分享&#xff1a; 这里我用的是Tinyproxy作为代理服务软件。这个东西很小&#xff0c;并没有几M。 tinyproxy最大的特点就是小&#xff0c;功能简单&#xff…

用nodejs搭建代理服务器步骤

前端开发者在工作中常常遇到跨域的问题&#xff0c;一般我们遇到跨域问题主要使用以下办法来解决: 1、jsonp 2、cors 3、配置代理服务器。 jsonp不是很灵活&#xff0c;只能发送get请求&#xff0c;不能发送psot请求&#xff0c;而cors虽然可以支持多种请求格式&#xff0c;…

关于腾讯云搭建代理服务器的详细过程

腾讯云的规定是一个账号一个地区只能有20个公网IP: 1)点击实例名 2)添加辅助网卡 3)绑定弹性公网ip 4)为辅助网卡绑定安全组 5)修改网卡配置文件 ### 复制eth0的网卡文件 ### [root@VM_1_62_centos ~]# cp /etc/sysconfig/network-scripts/ifcfg-eth{0,1} ### 修改eth1文…

使用腾讯云Ubuntu20.04搭建代理服务器

文章目录 安装配置文件位置云服务器开放端口 添加规则运行停止状态重启连接测试参考 安装 sudo apt-get install tinyproxy配置文件位置 /etc/tinyproxy.conf 或者 /etc/tinyproxy/tinyproxy.conf # 预设是8888 Port, 可以更改 Port 8888 # 将127.0.0.1改成你自己的IP All…

xray搭建代理服务器

xray 代理服务器配置 1.下载xray 2.执行 xattr -c /Users/mac/Downloads/Xray-macos-64.zip 3.配置 log:LogObject &#xfffc; waring 改成debug 2.InboundObject &#xff1a; &#xfffc; protocol:HTTP &#xfffc; settings 设置为如下&#xff0c;address和…

linux搭建代理服务器

最近在做某个项目时&#xff0c;由于机房环境是内网环境&#xff0c;但是有些服务&#xff08;短信发送、email发送&#xff09;需要访问外网交互&#xff0c;所以需要搭建代理服务器。 该服务器可以访问外网&#xff0c;所有的内网服务通过该代理服务器访问外网。简易示意图如…

Ubuntu 搭建代理服务器squid

目录 前言 工具准备 安装squid 修改配置文件 重新加载配置文件 查看squid的端口状态 为浏览器配置代理 前言 本来这次的测试是想在校园网环境下 实现无认证通过某个已认证的主机代理上网的! 可后来通过测试我发现只有主机通过校园网认证后才能访问校园网内(局域网)的主机…

mysql的字符集修改_修改MySQL字符集

1.关于MySQL字符集 MySQL的字符集支持(CharacterSet Support)有两个方面: 字符集(Characterset)和排序方式(Collation)。 MySQL对于字符集的支持细化到四个层次:服务器(server),数据库(database),数据表(table)和连接(connection)。 2.查看MySQL字符集 2.1.查看字符集的设置…

mysql 字符集设置

一、 MySQL字符集设置 &#xff08;1&#xff09; 系统变量&#xff1a; – character_set_server&#xff1a;默认的内部操作字符集 – character_set_client&#xff1a;客户端来源数据使用的字符集 – character_set_connection&#xff1a;连接层字符集 – characte…

mysql 所有字符集_mysql字符集

mysql字符集 字符集基础 字符集:数据库中的字符集包含两层含义 各种文字和符号的集合,包括各国家文字,标点符号,图形符号,数字等。 字符的编码方式,即二进制数据与字符的映射规则; 字符集分类: ASCII:美国信息互换标准编码;英语和其他西欧语言;单字节编码,7位(bits…

MySQL字符集设置为UTF-8,但控制台仍然出现中文乱码问题

问题描述&#xff1a;MySQL字符集为UTF-8&#xff0c;控制台显示结果的中文字符仍然会出现乱码&#xff0c;如何解决&#xff1f; 详细描述&#xff1a;安装MySQL的时候选择了UTF8的字符集&#xff0c;为了方便数据库维护&#xff0c;所有字符集也都设置了UTF8的字符集&#xf…

mysql服务器默认操作字符集,MySQL 字符集设置

数据库建库时默认是设置的latin1编码,查看系统的字符集和排序方式 show variables like character%; SHOW VARIABLES LIKE collation_%; SET NAMES gb2312; show variables like character%; SET NAMES x 相当于 SET character_set_client = x; SET character_set_results = x…

mysql数据库的字符集设置_mysql数据库的字符集设置

原文链接&#xff1a;http://blog.csdn.net/sin90lzc/article/details/7648439 作者&#xff1a;开浪裤 Notice:文章基于ubuntu系统而写 1.关于MySQL字符集 MySQL的字符集支持(Character Set Support)有两个方面&#xff1a; 字符集(Character set)和排序方式(Collation)。 MyS…

mysql中设置字符集语句_MYSQL字符集设置的方法详解(终端的字符集)

前言 每次利用终端 创建数据库或者创建表的时候,字符集都是latin1,或者进行插入值的时候,显示的是乱码(不指定字符集的时候)如下: 查看当前数据库的字符集 character_set_client:客户端请求数据的字符集 character_set_connection:客户机/服务器连接的字符集 character_s…

配置MySQL字符集教程

引 ​ MySQL 默认的字符集叫做拉丁文, 是不支持中文的. 为了能够存储中文, 就需要把字符集 改成 UTF-8 修改 MySQL 字符集的办法有很多种, 而修改 MySQL 的配置文件则是一个 一劳永逸 的办法~ 1. 先确认当前数据库的字符集 首先使用 SQL 语句 show variables like character%; …

MySQL的字符集设置

在安装完mysql后&#xff0c;最好先设置一下字符集。因为如果不设置的话&#xff0c;mysql5.7新创建的数据库使用的是latin字符集&#xff0c;这会导致数据库表不能插入中文。mysql8.0默认已经使用utf-8 对于新手来说&#xff0c;如果你已经创建了数据库&#xff0c;那么可以直…

MySQL的字符集设定

我们有时在查看数据库数据时&#xff0c;看到一写乱码&#xff0c;这是由于mysql数据库字符集设定的问题&#xff0c;下面我就来谈谈如何正确设定字符集 在mysql中可以设定的字符集有&#xff1a;①服务器默认字符集 ②数据库字符集 ③表的字符集 ④列的字符集。 如果一个级别…

MySQL字符集设置

一、 MySQL字符集设置 &#xff08;1&#xff09; 系统变量&#xff1a; – character_set_server&#xff1a;默认的内部操作字符集 – character_set_client&#xff1a;客户端来源数据使用的字符集 – character_set_connection&#xff1a;连接层字符集 – characte…