同域代理

栏目: Json · 发布时间: 5年前

内容简介:当前解决的方案有以下几种:

前沿

跨域请求 对于每一个前端开发应该都不会陌生,由于一些安全策略的限制,默认情况下浏览器不允许在一个域下请求另外一个域下的资源,例如 www.codeboy.me 下请求 test.codeboy.me 下的资源,相同的域要求协议、域名、端口都必须相同。

当前解决的方案有以下几种:

1. JSONP
2. 同域请求
3. CORS(跨域资源共享)

JSONPCORS 均需要服务端进行适当适配和改造,这里不再讲述,感兴趣的小伙伴可以自行查询。这里我们对同域请求的实现进行说明。

同域请求 ,顾名思义就是将相同域下的请求进行代理,其实是一种 反向代理 , 用最近项目开发中的一个例子来进行叙述和配置。前端页面部署在 project.example.com 中,服务端代码也部署在该服务器上,但是端口是 9999 , 正常情况下, http://project.example.com/test.html 页面中是访问不到 http://project.example.com:9999/api/getData 的数据的,此事我们可以加一层代理,将 http://project.example.com/api/getData 全部代理转发到 http://project.example.com:9999/api/getData 即可。

准备环境

鉴于长期使用 Apache Server ,本次基于 Apache 2.4.18 进行,后端所有的接口均有 /api 开头。

期待目标

  • 正常访问 http://project.example.com 可以请求到所有的静态资源
  • 所有的 http://project.example.com/api/** 的请求代理到 http://project.example.com:9999/api/**

服务器配置

在原有配置 VirtualHost 目录中,增加对 /api 的反向代理,由于同域,可以直接转发到 127.0.0.1 上即可。

<VirtualHost *:80>
	ServerAdmin admin@example.com
  ServerName project.example.com
	DocumentRoot /var/www/example
 
	<Directory /var/www/example>
		Options FollowSymLinks
		AllowOverride None
    Require all granted
	</Directory>

  ProxyPass /api/ http://127.0.0.1:9999/api/
  ProxyPassReverse /api/ http://127.0.0.1:9999/api/
  ProxyPassReverseCookiePath / /api
	
	LogLevel warn

	CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

总结

使用 同域代理 后,服务端和前端代码都不需要进行修改,完美的解决了问题。最后还要说明的一点是:跨域请求被拒绝是在浏览器(客户端)上进行的,并不是服务端。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

以匠心,致设计:网易 UEDC 用户体验设计

以匠心,致设计:网易 UEDC 用户体验设计

网易用户体验设计中心 / 电子工业出版社 / 2018-8 / 95.00元

为什么网易云音乐的体验流畅细腻、富有温度?为什么网易严选App的UI设计让人感到温馨、舒适?为什么网易蜗牛读书App的界面设计让用户爱不释手…… 《以匠心,致设计:网易 UEDC 用户体验设计》是网易用户体验设计团队对自身过去的设计思考的精心总结,最大程度还原了网易产品背后的设计故事,内容涵盖设计基础、设计实践、方法思考、成长指南四章,借助网易产品设计的实际案例具体讲述了设计师日常工作中不可......一起来看看 《以匠心,致设计:网易 UEDC 用户体验设计》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具