了解一下跨域的解决办法

本文介绍了浏览器的同源策略及其限制,接着详细讲解了跨域请求的三种解决方案:JSONP、CORS和服务器代理(正向代理)。JSONP只支持GET请求,安全性较低;CORS需要目标服务器配合设置允许跨域;服务器代理则是通过设置代理服务器转发请求,避免同源策略限制。

一、首先了解一下同源策略

浏览器给的发送请求的限制 当发送方地址接受放地址传输协议域名端口号有任意一个不一样就是触发了同源策略

通俗点来说:

   浏览器给发送请求的限制

          你可以发送请求

          你只能向自己家的服务器 发送请求

          你不能向别人家的服务器发送请求

          那么什么叫做别人家的服务器?

          当 传输协议 或者 域名 或者 端口号 有任意一个不一样的时候,浏览器就会认为你在请求别人家的服务器

          他就不让你请求, 告诉你触发了 同源策略

          我们叫触发了同源策略的请求叫做跨域请求

   二、介绍跨域请求的三种解决办法

 1. jsonp

          script 标签会把请求回来的所有内容当作 js 代码来执行 script 标签的 src 属性不受同源策略的影响 通过以上两个特点我们使用 script 标签的 src 属性请求一个跨域地址 对应的后端只要返回一段可执行代码。

例如:可直接在src中输入地址进行访问

          <script src="http://127.0.0.1/server/jsonp.php"></script>

它的缺点:
       1它只支持GET请求而不支持POST等其它类型的HTTP请求。
       2它只支持跨域HTTP请求这种情况,不能解决不同域的两个页面之间如何进行JavaScript调用的问题。
       3 jsonp在调用失败的时候不会返回各种HTTP状态码。
       4安全性比较差。

 2. cors

      跨域是因为浏览器不让请求别人家的服务器

       如果别人家的服务器告诉浏览器, 我允许这个域名请求我

       浏览器就管不着了, 就可以正常请求了

     上面三行代码一写, 那么就等于这个服务器开启了跨域资源共享。

3. 代理(服务器代理)

   代理跨域(服务器正向代理跨域)

   因为浏览器不允许你请求一个非同源的地址,所以我们需要借助代理服务器来获取

        1、  具体步骤:

          在浏览器同源设置一个 代理服务器

          把本该发送给目标服务器的请求发送给 代理服务器

          由 代理服务器 转发请求给 目标服务器

          目标服务器把响应返回给 代理服务器

          代理服务器 在把响应给到 浏览器

         2、怎么进行代理配置(以phpstudy为例)

         打开 phpstudy 窗口

         点击切换版本

         点击 php5.4.xxx + nginx

切换完成会出现Nginx

      2. 打开 phpstudy 窗口

        点击其他选项菜单

       点击打开配置文件

       点击 nginx-conf(config)

      大概在 56 行左右有一个 server

      顺着开始括号找到 server 的闭合大括号

      在这个闭合大括号的上面一行书写代理配置

        代理配置的写法:

        location = /xx {

              proxy_pass http://127.0.0.1/server/proxy.php;

          }

          注意:/之前必须要有空格;xx是代理标识符,自定义的;{} 里面的那个地址, 就是你要跨域请求的地址(目标服务器的地址); 最后的分号必须有;修改完毕以后, 一定要重启服务器。当你切换到 nginx 服务器不管是 html 文件还是 php 文件, 都不能用中文了,只要是中文就报错了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值