记一个http-proxy-middleware 代理访问nginx映射的接口不通过的问题(connection close)
工作过程中遇见一个问题,使用Vue-cli 搭建了一个工程,由于跨域的问题 使用了自带的dev-server Express Server(A后台) http-proxy-middleware 去访问后台的接口nginx Server(B后台),而这个接口为niginx 代理的另一个后台(C后台),理清一下关系:
开发页面去请求A后台(devServer)的接口, 然后这个请求会被转发的B后台(nginx), 然后再会被nginx映射到C后台(我们真实要访问的后台),你可能会问为什么不用A直接去代理访问C, 非要在中间加了个nginx呢 ? 由于C是个交换机设备上的server, 直接用我的A (devServer)去代理C不好使,所以才有这样的情景。
从B到C的过程一切都很正常,但是从A到B中间的每次的请求返回时connection 都是close , 而正常的是keep-alive的,这就导致我在页面里登录成功后 继续请求其他接口还是验证不通过。网上找了好多资料都不好使。
最终解决方案是,(当一条路走不通的时候,换一条试试):
跨域问题解决的方法之一, CORS
通过修改ngnix配置文件,加入allow-origin头
location ~ \.do$ {
add_header 'Access-Control-Allow-Origin' 'http://localhost:8080'; //这个是我的A devServer,必须设置具体的值,不要使用* 否则访问接口的时候浏览器会报错
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Credentials' true;
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
proxy_pass http://172.16.15.65;
}
配置完这个重启nginx然后你的页面里直接写B的接口就不会存在跨域问题了,但是这个时候如果登录的过程中产生了一个cookie这个信息在你后面访问借口的时候不会自动添加上的,需要在你的ajax里面加上withCredentials,例如jquery 的ajax
$.ajax({
url : "*****",
type : post,
dataType : params.dataType,
data : cliPostData,
cache : false,
//注意这里
xhrFields: {
withCredentials: true
},
success : function(data) {
}
})
这样就可以携带cookie的认证信息了,然后再进行页面的直接访问接口就可以正常使用了。
记一个http-proxy-middleware 代理访问nginx映射的接口不通过的问题(connection close)的更多相关文章
- 记一个关于std::unordered_map并发访问的BUG
前言 刷题刷得头疼,水篇blog.这个BUG是我大约一个月前,在做15445实现lock_manager的时候遇到的一个很恶劣但很愚蠢的BUG,排查 + 摸鱼大概花了我三天的时间,根本原因是我在使用s ...
- 通过代理访问nginx和直接访问nginx区别
80.82.78.38 [23/Sep/2016:05:36:18 +0800] "GET http://www.baidu.com/cache/global/img/gs.gif HTTP ...
- 正向代理与反向代理以及Nginx【总结】(转)
今天在了解Nginx的时候,涉及到反向代理的问题,看到一篇博文写的清晰明了,转载记录一下,后续继续学习,再次感谢博主的分享. 原文地址:https://www.cnblogs.com/Anker/p/ ...
- Nginx 防CC攻击拒绝代理访问
先大概说说简单的结构…前端一个Nginx反向代理,后端一个Nginx instance app for PHP…实际上就是个Discuz,之前面对CC攻击都是预警脚本或者走CDN,但是这次攻击者不再打 ...
- Linux(7)- Nginx.conf主配置文件、Nginx虚拟主机/访问日志/限制访问IP/错误页面优化、Nginx反向代理、Nginx负载均衡
一.Nginx.conf主配置文件 Nginx主配置文件conf/nginx.conf是一个纯文本类型的文件,整个配置文件是以区块的形式组织的.一般,每个区块以一对大括号{}来表示开始与结束. 核心模 ...
- Nginx反向代理访问内网服务器
Nginx反向代理访问内网服务器 问题描述 公司给配的台式机太垃圾了,不能访问外部网络就算了,还没有maven私服.近期项目不光得使用maven还得使用内网中的数据库之类,台式机太卡只能用自己的笔 ...
- Docker Nginx-Proxy 容器Nginx Proxy反向代理
Docker Nginx-Proxy 容器Nginx Proxy反向代理 简单介绍 Docker容器的自动Nginx反向代理 dockerhub地址 https://hub.docker.co ...
- CentOS6.3搭建Nginx代理访问MongoDB GridFS图片资源
PHP可以直接读取MongoDB GridFS中的图片并显示到页面中,但对PHP的压力就大了.偶然机会,了解到Nginx可以代理访问,实现过程如下: 1.工具准备 安装一些必要的编译工具及库,这里是直 ...
- requests使用“proxy”代理访问接口
在requests中使用proxy代理访问 使用前先更新requests版本为支持socks的版本. 先pip安装对应库: >> pip install -U requests[so ...
随机推荐
- spring MVC上传附件
spring mvc为我们封装了十分简单的上传附件的方法,以下通过一个例子学习. 1.jsp <%@ page language="java" contentType=&qu ...
- Postgres中的物化节点之sort节点
顾名思义,物化节点是一类可缓存元组的节点.在执行过程中,很多扩展的物理操作符需要首先获取所有的元组后才能进行操作(例如聚集函数操作.没有索引辅助的排序等),这时要用物化节点将元组缓存起来.下面列出了P ...
- linhaifeng
http://www.cnblogs.com/linhaifeng/p/7278389.html http://blog.51cto.com/egon09
- iOS 轻松实现自定义TabBar
自定义TabBar的案例网上不少,昨天受到开发小伙伴的影响,尝试了一下非大神的取巧思路:Demo 1.创建RootViewController,后面创建几个继承的VC,将这几个VC添加到TabBarC ...
- iOS 接收新消息通知调用系统声音 震动
添加系统框架: #import <AudioToolbox/AudioToolbox.h> 调用震动代码: AudioServicesPlaySystemSound(kSystemSoun ...
- http性能测试工具wrk源码学习之开篇
1.前言 最近工作需要测试nginx反向代理的性能,于是找了一些http测试工具,例如经典的Apache的ab.siege.wrk.wrk使用多线程事件驱动方式,支持lua脚本扩展.关于wrk介绍可以 ...
- OpenStack运维(二):OpenStack计算节点的故障和维护
1.计划中的维护 举例:需要升级某一个计算节点的硬件配置,需要将计算节点上的虚拟机迁移后在对其进行操作,分为两种情况. 1.1 云系统使用了共享存储 a. 获取虚拟机列表:nova list --ho ...
- ES6 对象的扩展(上)
属性的简介表示法 允许直接写入变量和函数作为对象的属性和方法,这样的书写更简洁. function f( x, y ) { return { x, y }; } // 等同于 function f( ...
- Linux(CentOS6.5)下编译Popt报错”GNU gettext is required. The latest version”(gettext已经编译安装,但是没有安装在默认目录)的解决方案
本文地址http://comexchan.cnblogs.com/,作者Comex Chan,尊重知识产权,转载请注明出处,谢谢! 背景: 编译popt的时候出现下述报错. 直接vi查看confi ...
- java 学习(二)
public class Scoure { public static void main(String args[]) { int score=90; if (score>=85 && ...