跨域Ajax的一个解决方法
今天在做『理工的』这个玩意儿的时候要用到Ajax
为什么会用到Ajax呢?因为这是一个『实名制』社区,每个用户要输入自己的学号和密码,然后用后台模拟登陆到教务系统,抓取到名字作为用户名。
就像这样
在用户点击『获取』按钮的时候,会调用JS,使用Ajax获取数据。获取的文件为test.php,test.php文件里面包含了模拟登陆教务系统的函数,在调用它的时候会返回获取到的名字和班级。
问题来了,用来获取信息的test.php文件在SAE的服务器上,我很早之前就已经写好了,而网站又在另外的服务器上,Ajax不能调用远程的数据,即『跨域调用』
解决这个问题有两个方法,一个是把test.php文件移植到网站服务器下,但是这并没有解决『Ajax跨域』这个问题,并且test.php用到了很多Sae封装好的函数,如果脱离Sae环境就无法使用了,所以移植起来比较麻烦。
于是我觉得用第二个办法,我称之为『搭桥法』(BridgeSend),我在本地服务器建立test1.php,在test1.php里面用file_get_contents()来获取远程Sae服务器里面test.php返回的内容,然后再在本地的页面Ajax这个本地的test1.php。
这样一来,就完美解决了Ajax跨域的问题,唯一遗憾的是可能速度稍稍有些降低。
新年快乐辣!
新头像帅气
想问问,你的[理工的]是用开源的系统二次开发,还是全部是自己开发呢?我也考虑做一个我们学校的,想跟你交流交流 ~
理工的 是用startbbs二次开发的
顶部的nav点击后active样式没有改变。[最新标签]里的label在chrome里显示得太大了..
嗯,我知道,目前主要是运营的问题,心力憔悴啊。。。
get的话,试试jsonp。
跨域可以考虑用jquery中ajax的jsonp形式去直接跨域请求数据。只要跨域的接口重新打包一下,用json把整个数据封装起来,就可以跨域拿到数据了,这也是跨域请求的标准解决方案
嗯,但是我对Jquery不熟,这算小技吧
2020/7/24 15:24