开封+网站建设+网络推广,个人做淘宝客网站不能备案吗,如何做网站产品图片,深圳做宣传网站的公司这里写目录标题 一、什么是跨域#xff1a;二、跨域问题解决思路#xff1a;1.从浏览器入手2.从域名入手3.从jsonp入手4.从代理入手 一、什么是跨域#xff1a;
跨域指的是不同服务器之间不能相互访问各自的资源或者数据#xff0c;这出于一个策略——“同源策略”#x… 这里写目录标题 一、什么是跨域二、跨域问题解决思路1.从浏览器入手2.从域名入手3.从jsonp入手4.从代理入手 一、什么是跨域
跨域指的是不同服务器之间不能相互访问各自的资源或者数据这出于一个策略——“同源策略”那么为什么要这么设计呢这是因为一些网站的数据可能涉及的用户的隐私因此不属于当前服务器的网站是不能访问它的就比如我们登陆淘宝后由不小心点进了其他的一个钓鱼网站如果说不这么设置那么钓鱼网站就可以获取到你的登陆账号和密码进而可以达到使用你的账户购买东西的目的因此跨域是出于安全的考虑而诞生的。
当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域 二、跨域问题解决思路
1.从浏览器入手
其实跨域只在浏览器下才会触发那有没有办法禁用浏览器的同源策略呢办法还真的有。
对于IE浏览器进入ie的网际网路选项设置然后选择安全性再选择自订等级然后下拉找到「存取跨网络的资料来源」选择启用即可
对于chrome浏览器通过在命令行输入chrome.exe --allow-file-access-from-files --user-data-dir“C:/Chrome dev session” --disable-web-security这会新建一个浏览器实例自动打开的chrome会显示一系列黄色的文字就说明成功了
对于FireFox浏览器在地址栏输入about:config然后下拉找到security.fileuri.strict_origin_policy然后设置为false即可
2.从域名入手
既然域名等信息不一致导致跨域产生那么干脆就把两个项目合并成一个项目使用相同的协议、域名和端口。
3.从jsonp入手
其实认真想想我们的系统中经常会用到外链的图片、样式文件以及插件那这些不会导致跨域吗是的真的不会因为这些是http请求并不是前面定义的xhrXmlHttpRequest请求。
既然图片和js脚本可以正常请求那么如果把script脚本的src改成我需要跨域请求的url是不是就可以了呢
是可以的当请求接口返回的数据需要稍微处理下。在平常引入script脚本时下载完文件后自动执行如果我们把src改成跨域url而且返回值是一段jjs语句比如
req.send(“alert(1)”); //后台返回js语句那么前台会会自动解析并执行。
4.从代理入手
还是回到最开始既然浏览器认为非同源不安全那么向同源请求不就行了我们把请求转到同一项目下的后台在同项目的后台进行xhr请求然后把请求结果原样返回给前台这就是代理或者叫转发。
成功的原因是同源策略只在浏览器下才起作用我用后台来请求其他的url那是不受影响的。开启后台代理可以用C#、JAVA、NodeJs、甚至是python都行只要能被前端访问的并且能转发请求就可以。