首页 > 其他分享 >使用koajs做一个代理跨域服务,可以代理任意网站和接口

使用koajs做一个代理跨域服务,可以代理任意网站和接口

时间:2023-03-19 21:44:49浏览次数:38  
标签:const 跨域 koa app ctx 代理 koajs router require

使用koajs做一个代理跨域服务。

const Koa = require('koa');
const proxy = require('koa-proxy');
const Router = require('koa-router');
const session = require('koa-session');

const app = new Koa();
const router = new Router();

app.keys = ['secret']; // 用于加密会话 ID 的密钥

app.use(session(app));

/**
 * 代理网站
 */
router.all('/aa/:path(.*)', async (ctx, next) => {

  //后台自己添加请求头
  // ctx.request.headers.cookie = 'csrftoken=uC2GbKsmAX7aqQuLtrKN5htiYZ4P3z0eKx6KMYQlGJxqeOJelnWp9ORqHOyYXKPR; sessionid=5a50kpokgthu53c9g9bqqa3dxypi8qz9';
  // ctx.request.headers.Authorization = 'JWT eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiMjE0ZmRlMzMtYjlmNC00OGNkLTljODQtN2U2M2Y1M2IxZGM1IiwidXNlcm5hbWUiOiJhZG1pbiIsImV4cCI6ODgwNzkxNDI2NTAsImVtYWlsIjoiYWRtaW5AMTYzLmNvbSJ9.iERNw8S5g-YDGk_s0Y9taNozLiqSlrg2Cklsah3l6bs';

  await proxy({
    host: 'http://111.222.333.444',
    jar: true,
    map: function (path) {
      return path.replace('/aa', '');
    },
  })(ctx, next)
});

app.use(router.routes());

app.listen(3000);
console.log('Server running at http://localhost:3000/');


/*
使用方式:
原链接:
http://111.222.333.444/api/v1/user/
现请求方式:
fetch("http://localhost:3000/aa/api/v1/user/", {
  "headers": {
    "accept": "application/json",
    "accept-language": "zh-CN,zh;q=0.9,en;q=0.8",
    "authorization": "JWT eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiMjE0ZmRlMzMtYjlmNC00OGNkLTljODQtN2U2M2Y1M2IxZGM1IiwidXNlcm5hbWUiOiJhZG1pbiIsImV4cCI6ODgwNzkxNDI2NTAsImVtYWlsIjoiYWRtaW5AMTYzLmNvbSJ9.iERNw8S5g-YDGk_s0Y9taNozLiqSlrg2Cklsah3l6bs",
    "cache-control": "no-cache",
    "pragma": "no-cache"
  },
  "referrerPolicy": "strict-origin-when-cross-origin",
  "body": null,
  "method": "GET",
  "mode": "cors",
  "credentials": "include"
});
*/

使用方式看注释

标签:const,跨域,koa,app,ctx,代理,koajs,router,require
From: https://www.cnblogs.com/wuhairui/p/17234386.html

相关文章

  • Linux(centos)接口代理策略
    Linux(centos)接口代理策略前言目的:实现一个接口转发,代理访问qiang内不能访问的接口。实现方式:直接使用go的第三方ssr包;(有报错,可能是版本不对,未实现)Linux直接安装ssr......
  • JDK实现动态代理
    动态代理基本介绍代理对象,不需要实现接口,但是目标对象要实现接口,否则不能用动态代理。代理对象的生成,是利用JDK的API,动态的在内存中构建代理对象。动态代理也叫作:JDK......
  • 代理模式
    1静态代理2什么是动态代理?动态代理是通过创建代理对象,在不改变原有代码的基础上,给程序增加新的功能,实现了程序的功能增强3动态代理有哪些JDK动态代理CGLB动态......
  • 代理配置解决跨域问题
    在vue.config.js文件中添加配置module.exports={transpileDependencies:true,lintOnSave:false,//代理配置,但是它只在开发环境有效devServer:{pro......
  • 终端代理
    Clash:写入文件vim~/.bash_profile    点击查看代码#Clashproxyaliasxu_proxy="exporthttps_proxy=http://127.0.0.1:7890;exporthttp_proxy=http:......
  • Spring Study -lesson11-动态代理扩展-2023-03-18
    一个动态代理接口类,可以作为工具接口,便于不同程序公共使用packagecom.feijian.Demo02;importcom.feijian.Demo.Rent;importcom.sun.corba.se.impl.ior.OldJIDLObje......
  • Spring Study -lesson11-动态代理(反射机制)-2023-03-18
    第一:接口类(增删改查)packagecom.feijian.Service;publicinterfaceUserService{publicvoidaddUser();publicvoidupdateUser();publicvoiddelet......
  • Vue3跨域问题Access to XMLHttpRequest at ‘http://127.0.0.1:8000/login‘ from ori
    这一个bug折磨了我一下午,终于解决了首先解决跨域问题需要修改vue.config.js文件在vue.config.js中添加devServer:{proxy:{'/api':{target:......
  • linux下的全局代理工具proxychain
    proxychain介绍本文介绍的是proxychains-ng项目在linux上运行一些命令的时候,经常访问到国外的网站,速度非常的慢,例如用git、wget等等,这个时候就可以通过proxychain工......
  • 爬虫:requests高级用法、代理池搭建、爬取某视频网站、爬取新闻
    目录一、requests高级用法1.0解析json格式数据1.1ssl认证(了解)1.2使用代理(重要)1.3超时设置1.4异常处理1.5上传文件二、代理池搭建2.1代理池介绍2.2搭建步骤2.3使......