首页 » 网站建设 » php抓取跨域技巧_一篇文章搞明白CORS跨域

php抓取跨域技巧_一篇文章搞明白CORS跨域

访客 2024-11-14 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。

标签:

相关文章

介绍皮肤设置,如何打造理想肌肤状态

随着科技的发展和人们对美的追求,皮肤设置已成为美容护肤的重要一环。如何根据皮肤类型、肤质、年龄等因素进行合理设置,已成为众多爱美人...

网站建设 2025-01-03 阅读1 评论0

介绍盖章制作,传承文化,彰显权威

自古以来,盖章在我国文化中具有重要的地位。从古代的官印、私印到现代的公章、合同章,盖章已成为一种独特的文化符号,承载着丰富的历史内...

网站建设 2025-01-03 阅读1 评论0

介绍监控破坏,技术手段与法律风险并存

随着科技的飞速发展,监控设备已遍布大街小巷,成为维护社会治安的重要手段。一些不法分子为了逃避法律制裁,开始研究如何破坏监控设备。本...

网站建设 2025-01-03 阅读1 评论0

介绍登录不上之谜,技术故障还是人为疏忽

随着互联网的普及,登录已成为人们日常生活中不可或缺的一部分。在享受便捷的登录不上这一问题也困扰着许多用户。本文将深入剖析登录不上之...

网站建设 2025-01-03 阅读1 评论0

介绍电脑键盘调出方法,让操作更高效

随着科技的发展,电脑已经成为了我们日常生活中不可或缺的工具。而电脑键盘,作为电脑输入设备,更是我们与电脑进行交流的桥梁。你是否知道...

网站建设 2025-01-03 阅读1 评论0

介绍磁力链,高效便捷的文件下载利器

在互联网高速发展的今天,文件下载已成为日常生活中不可或缺的一部分。而磁力链作为一种新型的文件下载方式,凭借其高效、便捷的特点,受到...

网站建设 2025-01-03 阅读1 评论0