zoukankan      html  css  js  c++  java
  • node端代理浏览器路由 解决浏览器跨域问题

    var _ = require('lodash');
    var request = require("request");
    
    /*
        @LM 2017-02-16
        node端代理浏览器路由 解决浏览器跨域问题
        demo:
        router.post('/proxy_http',proxy_routes);
    
        condition = {
            url:'',//接口地址 (必填)
            method:''//接口方式 (看接口需求)
            host:'',//
            form:{} post请求参数
        }
    
    */
    
    exports.proxy_routes = function(req, res, next) {
    
        /*处理get或者post请求的req参数*/
        var condition = _.assign(req.body || {}, req.query || {});
        if(!condition.url){
            return next({status:101,message:'not defind url'})
        }
    
        if(condition.host){
            req.headers.host = condition.host;
        }
    
        var opts = {
            url: condition.url,
            method: condition.method||'GET',
            // headers: req.headers,
            form:condition.form||{}
        };
    
        var ts = Date.now();
        console.log('proxy_routes', opts, ts, "请求开始--");
    
        request(opts,function(err, response, body) {
            if(err){
                console.log('proxy_routes', opts, ts, "请求异常--err:" + err, (Date.now() - ts) + 'ms');
                return next(err);
            }
            
            console.log('proxy_routes', opts, ts, "请求正常--response.statusCode:" + response.statusCode, (Date.now() - ts) + 'ms');
            try{
                res.json(JSON.parse(body));
            }catch(e){
                res.json(body);
            }
        });
        
    };
  • 相关阅读:
    ElasticSearch Java API
    ElasticSearch 核心概念
    ElasticSearch 基本操作
    ElasticSearch概述
    Spring AOP 实现原理与 CGLIB 应用
    Spring AOP 实现原理
    线程池队列饱和策略
    Hibernate 事物隔离级别 深入探究
    Hibernate 所有缓存机制详解
    Java NIO API详解
  • 原文地址:https://www.cnblogs.com/dtdxrk/p/6421129.html
Copyright © 2011-2022 走看看