谈谈如何使用Node.js代理解决跨域问题
前端和后端是分离的,这往往会导致跨域访问受限的问题。
出于安全原因,跨域访问限制是服务器的限制行为。也就是说,只能访问来自同一域或指定域的请求。这样也可以防止图片被盗。服务器(如Node.js)可以通过代理解决这个问题。
1安装请求库
npm安装请求-保存-开发
2配置
我们以知乎日报为例,配置两个代理。一个代理内容,另一个代理图片。
在项目根目录中,配置proxy.js:
//proxy const http=require(' http ');const request=require(' request ');const HostIP=' 127 . 0 . 0 . 1 ';const apiPort=8070const imgPort=8071//创建API代理服务const API server=http . createserver((req,RES)={ console . log('[API server]req . URL=' req . URL ');const URL=' http://news-at . zhi Hu.com/story ' req . URL;console . log('[APiSERVER]URL=' URL ');const options={ URL : URL };函数回调(错误、响应、正文){ if(!错误响应。status code==200){//代码类型res.setheader ('content-type ',' text/plain;字符集=UTF-8’;//允许跨域RES . setheader(' access-control-Allow-origin ',' * ');//返回代理内容res.end(正文);} } request.get(选项,回调);});//侦听API端口apiserver.listen (apiport,hostip,()={console.log('代理接口,运行于http://' hostIp ' : ' API port '/');});//创建图像代理服务const mg server=http . create server((req,RES)={ const URL=' https://pic2.zhimg.com/'req.url.split '(/img/')[1];console . log('[IMgserver]URL=' URL ');const options={ url: url,encoding : null };函数回调(错误、响应、正文){ if(!错误响应. status code===200){ const content type=response . headers[' content-type '];res.setHeader('Content-Type ',Content Type);res.setHeader('访问控制-允许-源',' *);res.end(正文);} } request.get(选项,回调);});//监听图片端口imgserver.listen (imgport,hostip,()={console.log ('proxy picture,运行于http://' hostip ' : ' img port '/')});代理的关键点是在响应头中添加访问控制允许源as *表示允许所有域访问。
代理前地址代理后地址https://pic2.zhimg.com/v2-bb0a0282fd989bddaa245af4de9dcc45.jpg http://127 . 0 . 0 . 1:8071/img/V2-bb0a0282fd989bddaa245af4de9dcc45.jpg http://news-at.zhihu.com/story/9710345 http://127 . 0 . 0 . 133608070/9710345 3。操作
执行:
节点代理. js
运行结果:
代理界面,运行于http://127.0.0.1:8070/代理图片,运行于http://127 . 0 . 0/
打开浏览器,输入代理后的地址,就可以正常访问了。O(_)O哈哈~
代理内容:
代理图片:
以上就是边肖介绍的Node.js代理解决跨域问题的详细解决和集成,希望对大家有所帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!
版权声明:谈谈如何使用Node.js代理解决跨域问题是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。