AJAX跨域的解决方法之PHP后端代理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
AJAX是一项客户端技术(JavaScript的XMLHttpRequest对象),在网页上可以用于异步加载数据。但是由于同源策略,一般来说位于服务器1的网页无法与其它的服务器(服务器2)沟通。这就产生了AJAX的跨域问题。解决这个问题有较多的办法可以实现,今天与大家分享一个比较常见的办法——后端代理。
起因:
通常指的AJAX对象(XMLHttpRequest对象)是无法访问其它服务器的数据,于是产生了跨域问题。
思考:
既然前端的AJAX无法跨域访问数据,但是可以访问本站(同源:域名、端口、协议)的数据。而PHP作为一门后端编程语言,是可以任意读取互联网的数据,当然就可以读取其它服务器的数据了。再将PHP读取到的数据交给前端使用,这时前端就能在本站的PHP 程序上得到远程服务器的数据了,也就是说,让本站的PHP程序当一个代理人,代替前端去读取数据再交给前端程序使用。这就是AJAX跨域的解决办法之一——后端代理!
需求:
在本地服务器list.html页面上使用AJAX技术获取并显示来自/的数据。
基于同源策略,该请求是无法完成的PHP后端代理实现:
1、编写PHP文件get.php
PHP访问的网页数据
2、编写HTML网页list.html
请求本站的后端文件get.php
3、执行结果
使用AJAX也能得到的数据了
后记:
其实解决AJAX跨域请求数据的办法有很多,比如:JSONP、设置响应头、Iframe等等,可以根据自身的实际情况来使用,今天介绍的后端代理核心点在于让后端程序去实现跨域获取数据,再以同源方式提供给前端页面使用,可以在有后端程序支持的情况下使用。下面再给大家列出一些常见的问题。
1、什么是AJAX?
AJAX是一项客户端技术,通常指的是window.XMLHttpRequest对象,也有老版本的IE浏览器以其它的对象名称来代表该对象。
2、什么是同源策略?
同源策略是浏览器最核心的安全功能。由Netscape提出的一个著名的安全策略,所有的JavaScript引擎都在用这个策略。所谓同源是指,域名,协议,端口相同。当一个浏览器的两个tab页中分别打开来百度和谷歌的页面,当浏览器的百度tab页执行一个脚本的时候会检查这个脚本是属于哪个页面的,即检查是否同源,只有和百度同源的脚本才会被执行。