十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
PHP实现跨域的方式有哪些?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!
创新互联建站-专业网站定制、快速模板网站建设、高性价比灵石网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式灵石网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖灵石地区。费用合理售后完善,10年实体公司更值得信赖。PHP实现跨域的几种形式
1、JSONP(JSON with padding)原理
利用html里面script标签可以加载其他域下的js这一特性,使用script src的形式来获取其他域下的数据,但是,因为是通过标签引入的,所以,会将请求到的JSON格式的数据作为js去运行处理,显然这样运行是不行的。
因此,就需要提前将返回的数据包装一下,封装成函数进行运行处理,函数名通过接口传参的方式传给后台,后台解析到函数名后在原始数据上包裹这个函数名,发送给前端。(JSONP 需要对应接口的后端的配合才能实现)
实例:
当script src请求到达后端后,后端会去解析callback这个参数,获取到字符串showData,在发送数据后端返回数据,用showData封装一下,即showData({"json数据"}) ,前端script标签在加载数据后,会把json数据作为showData的参数,调用函数运行。
2、CORS
CORS全称是跨域资源共享(Cross-Origin Resource Sharing
),是一种 ajax 跨域请求资源的方式,支持现代浏览器,IE支持10以上。
实现方式:
当使用XMLHttpRequest
发送请求时,浏览器发现该请求不符合同源策略,会给该请求加一个请求头:Origin
,后台进行一系列处理,如果确定接受请求,则在返回结果中加入一个响应头:Access-Control-Allow-Origin
;浏览器判断该相应头中,是否包含Origin的值,如果有,则浏览器会处理响应,我们就可以拿到响应数据,如果不包含,浏览器直接驳回,这时,我们无法拿到响应数据。
实例:
server.js
var http = require('http') var fs = require('fs') var path = require('path') var url = require('url')http.createServer(function(req, res){ var pathObj = url.parse(req.url, true) switch (pathObj.pathname) { case '/getNews': var news = [ "第11日前瞻:中国冲击4金 博尔特再战200米羽球", "正直播柴飚/洪炜出战 男双力争会师决赛", "女排将死磕巴西!郎平安排男陪练模仿对方核心" ] res.setHeader('Access-Control-Allow-Origin','http://localhost:8080') //res.setHeader('Access-Control-Allow-Origin','*') res.end(JSON.stringify(news)) break; default: fs.readFile(path.join(__dirname, pathObj.pathname), function(e, data){ if(e){ res.writeHead(404, 'not found') res.end('404 Not Found
') }else{ res.end(data) } }) }}).listen(8080)
index.html
3、postMessage
假设有两个域名(主域域名不一致),其中iframe页面是允许访问调用,那么就可以用postMessage实现。
原理:a域名发送请求postMessage,b域名间听到了message事件,就处理并返回数据
//b域名
感谢各位的阅读!看完上述内容,你们对PHP实现跨域的方式有哪些大概了解了吗?希望文章内容对大家有所帮助。如果想了解更多相关文章内容,欢迎关注创新互联成都网站设计公司行业资讯频道。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。