Angular4开发解决跨域问题
1.跨域浏览器对于javascript的同源策略的限制,例如a.cn下面的js不能调用b.cn中的js,对象或数据(因为a.cn和b.cn是不同域),所以跨域就出现了. 2.反向代理反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。 3.Angular4跨域Angular4项目分为工程代码和生产代码,在本地调试一般都是工程代码,这样联调接口的话,每次写一个接口都要丢到服务器上测试,严重影响效率,所以我们需要做的就是能在工程项目上联调接口,随时能看到效果,但是后端代码不是部署在本机的话就会有跨域问题,于是我们便需要去着重去解决跨域问题!这样后端代码随时改,前端也可以随时更改看到效果,实现真正的前后端分离! { "/api":{ "target":"http://106.15.179.92" } } http://106.15.179.92:为你连接机器的ip地址,或者你所需要请求的接口域名,这个就是需要被代理的 this.$http.post(`/api/front/frontUserController/login.do`,data) .then(res=>{ Console.log(res); }) 因为http://106.15.179.92已经被代理到/api上! "scripts": { "ng": "ng","start": "ng serve --proxy-config proxy.config.json","build": "ng build --prod --aot","test": "ng test","lint": "ng lint","e2e": "ng e2e" } 4.甩锅解决跨域跨域?和我们前端有关系?有吗?没有吧!我不解决,我就不解决,你们后端去解决! $("button").click(function () { $.get("127.0.0.1:8081/partners/json",function (result) { $("div").html(result); }); }); 下面把testFlask2项目的javascrip文件修改一下。这样访问同源的url,就不会有跨域问题。 $("button").click(function () { $.get("partners/json",function (result) { $("div").html(result); }); }); 但是,我们testFlask2项目实际上没有partners/json这样的url,那怎么处理呢? server{ listen8000; location/ { includeuwsgi_params; uwsgi_passunix:/tmp/testFlask2.sock; } location/partners { rewrite^.+partners/?(.*)$ /$1 break; includeuwsgi_params; uwsgi_passunix:/tmp/testFlask1.sock; } } 我们把testFlask2项目部署在8080端口的根目录下。把提供web服务的testFlask1项目部署在/partners目录下。 location/sohu { rewrite^.+sohu/?(.*)$ /$1 break; includeuwsgi_params; proxy_passhttp://www.sohu.com/; } 我们就把sohu网站整个搬到我们的8080:/sohu/目录下了,我们的javascript就可以尽情调用其RESTFUL服务了。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |