首页 » SEO优化 » php怎么跨域技巧_一篇文章搞明白CORS跨域

php怎么跨域技巧_一篇文章搞明白CORS跨域

duote123 2024-11-20 0

扫一扫用手机浏览

文章目录 [+]

口试问到数据交互的时候,常常会问跨域如何处理。
大部分人都会回答JSONP,然后口试官紧接着就会问:“JSONP缺陷是什么啊?”这个时候坑就来了,如果口试者说它支持GET办法,然后口试官就会追问,那如果POST办法发送要求怎么办?根本踏实一些的口试者会说,利用CORS跨域,不踏实的可能就摇摇头了。

这还没结束,如果公司比较正规或者很在乎技能功底,你口试的又是主要岗位,HR还想砍你的人为,就会再补一刀,CORS跨域有什么问题呢?这时候能回答上来的就没几个了,就算是你答出来兼容性不好,须要IE10+浏览器,对方依然有话说,那兼容性怎么处理呢?应试者就没话了,要么被Pass掉,即便留下来,谈人为的时候就没底气了。

php怎么跨域技巧_一篇文章搞明白CORS跨域

CORS跨域实在是口试官pass一个人的利器。

php怎么跨域技巧_一篇文章搞明白CORS跨域
(图片来自网络侵删)

为什么会这样呢?

1.碰着CORS要求的情形不多,开拓者利用这个场景的很少,大部分都JSONP搞定了。

2.开拓者自身技能不踏实,偷

3.干系的学习资料少、纯前端小白搭建可测试的环境难度大。

面对这条拦路虎,我们本日就彻底办理掉它,让它不再是我们的软肋,而是彰显我们技能实力的亮点。

首先,什么是CORS?

CORS是一个W3C标准,全称是\公众跨域资源共享\"大众(Cross-origin resource sharing)。
它许可浏览器向跨源做事器,发出XMLHttpRequest要求,从而战胜了AJAX只能同源利用的限定。

优缺陷

优点:

1.支持POST以及所有HTTP要求2.安全性相对JSOP更高3.前端要做的事儿比较少

缺陷:

1.不兼容老版本浏览器,如IE9及其以下2.须要做事端支持3.利用起来轻微繁芜了些

怎么用?

前端部分:

<!DOCTYPE html><html lang=\"大众en\公众><head> <meta charset=\"大众UTF-8\"大众> <meta name=\"大众viewport\"大众 content=\"大众width=device-width, initial-scale=1.0\公众> <meta http-equiv=\"大众X-UA-Compatible\"大众 content=\公众ie=edge\"大众> <title>CORS跨域要求</title> <script> function createCORSRequest(method, url) { var xhr = new XMLHttpRequest(); if (\"大众withCredentials\公众 in xhr) { xhr.open(method, url, true); } else if (typeof XDomainRequest != \"大众undefined\公众) { xhr = new XDomainRequest(); xhr.open(method, url); } else { xhr = null; } return xhr; } window.onload = function () { var oBtn = document.getElementById('btn1'); oBtn.onclick = function () { var xhr = createCORSRequest(\"大众get\"大众, \公众http://wpdic.com/cors.php\公众); if (xhr) { xhr.onload = function () { var json = JSON.parse(xhr.responseText); alert(json.a); }; xhr.onerror = function () { alert('要求失落败.'); }; xhr.send(); } }; }; </script></head><body> <input type=\"大众button\"大众 value=\"大众获取数据\"大众 id=\公众btn1\"大众></body></html>

把稳点:

1.上面代码兼容IE8,由于用了XDomainRequest

2.其它代码你就当成XMLHttpRequset用,别考虑什么2.0不2.0的

3.如果你想post数据,可以往 xhr.send()里面搞

4.这里不建议大家研究\"大众simple methdod\"大众之类的知识,代码弄懂了会用就行,碰着问题了再查也不晚

后台部分:

<?phpheader('content-type:application:json;charset=utf8');header('Access-Control-Allow-Origin:');header('Access-Control-Allow-Methods:GET,POST');header('Access-Control-Allow-Credentials: true');header('Access-Control-Allow-Headers:x-requested-with,content-type');$str = '{\"大众a\"大众:1,\公众b\"大众:2,\"大众c\"大众:3,\公众d\"大众:4,\"大众e\公众:5}'; echo $str;?>

把稳点:

1.Access-Control-Allow-Origin: 表示许可任何域名跨域访问,如果须要指定某域名才许可跨域访问,只需把Access-Control-Allow-Origin:改为Access-Control-Allow-Origin:许可的域名,实际事情也要这么做2.Access-Control-Allow-Methods:GET,POST 规定许可的方法,建议掌握严格些,不要随意放开DELETE之类的权限

2.Access-Control-Allow-Credentials

该字段可选。
它的值是一个布尔值,表示是否许可发送Cookie。
默认情形下,Cookie不包括在CORS要求之中。
设为true,即表示做事器明确容许,Cookie可以包含在要求中,一起发给做事器。
这个值也只能设为true,如果做事器不要浏览器发送Cookie,删除该字段即可。

末了,口试常考问题:

CORS和JSONP的运用处景差异?

CORS哀求浏览器(>IE10)和做事器的同时支持,是跨域的根本办理方法,由浏览器自动完成。
优点在于功能更加强大支持各种HTTP Method,缺陷是兼容性不如JSONP。

标签:

相关文章

介绍百度网盘,云端存储时代的创新先锋

随着互联网技术的飞速发展,云计算已经成为现代生活不可或缺的一部分。而在这其中,百度网盘作为国内领先的云存储服务提供商,以其卓越的性...

SEO优化 2025-01-03 阅读1 评论0

介绍监控屏蔽技术,守护个人隐私的利器

随着科技的发展,监控设备已经深入到我们生活的方方面面。在享受便利的隐私安全问题也日益凸显。如何有效屏蔽监控,保护个人隐私,成为人们...

SEO优化 2025-01-03 阅读1 评论0

介绍番号观看方法,轻松驾驭影视世界

随着互联网的普及,网络影视资源日益丰富,番号作为影视作品的标识码,已经成为广大观众了解、搜索和观看影视作品的重要途径。如何正确地使...

SEO优化 2025-01-03 阅读1 评论0

介绍盗微信号黑幕,网络安全的严峻挑战

在数字化时代,微信已成为人们生活中不可或缺的通讯工具。随着微信用户数量的激增,盗微信号的事件也日益增多。本文将深入剖析盗微信号的方...

SEO优化 2025-01-03 阅读1 评论0