一、前言
我们知道跨域在前端开发中是一个非常常见的问题,我们平时也有很多方法去解决他,比如说降域、cors、jsonp、postMessage等。还有一种很常用的方式是用nginx反代的方式去实现跨域,今天我们就来谈一谈关于使用nginx反代来实现跨域的问题。
二、原理
我们都知道,跨域问题的产生是因为不同源的问题,那么,同源是指什么呢?同源,即域名、协议、端口都一样即同源。如果有一个不一样则不同源。而浏览器为了安全,对不同源的请求做了限制,即不允许发一个非同源的请求。这里需要划重点:浏览器为了安全。这个意思就是,这个行为是浏览器的行为,而不是你发一个不同源的请求就会被拦截。那么这个问题就好解决了,我们把请求发送到nginx上,在由nginx发送到目的服务器,目的服务器处理完毕后,同样把消息在发送给nginx,nginx在返回给前端。我们在服务器的层面上去处理跨域的问题,就不存在跨域的限制了。
三、实现
如何在本地配置nginx这里我就不介绍了,如果不了解的同学可以先上网找一找相关的内容学习一下,下面我们先一步步实现。首先先用node在本地搭一个简单的服务器:
var http = require('http');
var hostName = '127.0.0.1';
var port = 8080;
var server = http.createServer(function(req, res) {
res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify('hello'));
});
server.