• 使用fiddle处理跨域


    认真的用fiddle处理跨域

    相信很多前端的同学都或多或少被跨域这个问题烦恼过,网上很多处理的方式其实都是要后端处理,
    用fiddle来处理 ,就不必看后端的脸色了,自己安安心心的倒腾接口,何乐而不为。

    在使用fiddle处理跨域之前,所需要注意的:

    • 1、是http请求还是的https请求,如果是https请求的话,要导入下证书,具体的步骤的:
    • 2、下载证书 点击下载
    • 3、下载完后双击安装即可。
    • 4、然后是fiddle的一些配置,可以参考下这篇文章只需要看前面半部分的配置即可
    • 5、可以输入 https://www.baidu.com 测试下是否能够捕获https请求。
    • 6、到这里前期工作基本完成。
    要区分需要处理跨域的场景

    1、网上百花撩乱的fiddle处理方式

    如果去搜索fiddle处理跨域,想必会搜索出来满屏幕的fiddle的处理方式。
    不能用的不能说是错的,只是可能不适用当前自己所需要的场景。

    2、场景1,用本地的文件来替代网络上的文件,进行规则替换

    这类的文章少说占了搜索结果的一半,

    例如csdn的一篇 前端开发fiddler跨域请求代理

    实际上就是对线上的文件进行替换,单个替换,正则匹配都行。

    替换成功后,便可以在本地修改代码使之生效。

    3、场景2,修改的Customize Rules,通常我们都这这类去修改规则,才能解决自己的跨域问题

    值得注意的是,在这个场景值其实也分为两块,一块是在OnBeforeRequest中,还有一块是在OnBeforeResponse中,
    就是一个发送请求之前,另一个是在发送请求之后响应之前 搞清楚了这个以后,就很容易知道自己在哪个地方,去添加什么代码了

    如图所示:

    具体举例说明:

    1、当需求在请求返回的时候解决跨域,要设置 Access-Control-Allow-Origin:*

           static function OnBeforeResponse(oSession: Session) {
            if (m_Hide304s && oSession.responseCode == 304) {
                oSession["ui-hide"] = "true";
            }
            oSession.responseCode=200;
            oSession.oResponse.headers.Add("Access-Control-Allow-Headers", "content-type,x-requested-with");
            oSession.oResponse.headers.Add("Access-Control-Allow-Origin","*");
        }
    

    可以参考 这篇文章

    2、当要设置请求头部的时候,就需要在OnBeforeRequest做文章了

      if (oSession.HostnameIs("xxx.xxx.com")){
              oSession.oRequest.headers.Remove("Origin");
          }
    

    例如可以针对特定的域名移除掉Origin

    此外也可以处理重定向

          var origin_host="172.16.11.21";
                var origin_port="8080";
                var origin_domain=origin_host+":"+origin_port;
                var replace_host="www.hongbaorili.com";
                var replace_port="80";
                var replace_domain=replace_host+":"+replace_port;
    
                if(oSession.host==origin_domain){
                    oSession.host=replace_domain;
                    }
    
                if ( (oSession.PathAndQuery == (origin_host+":"+origin_port))) {
                    oSession.PathAndQuery = replace_host+":"+replace_port;
                }
    

    比如 fiddler重定向本地服务器URL到线上URL

    结尾:

    其实在Customize Rules.js这个文件中还可以处理很多场景下的东西,有兴趣的话可以自己再多研究,另外这一篇文章,也介绍的蛮多详情点,点击这里

    这段时间都一直浸淫在小程序当中,有愿意讨论的童鞋欢迎,目前小程序已稳定上线2个多月,社区类的小程序。

    转载请注明原文地址 https://www.cnblogs.com/star-wind/p/10341573.html:谢谢

    我的github,欢迎拍砖

  • 相关阅读:
    phonegap开发入门
    [转] jQuery源码分析-如何做jQuery源码分析
    【转】HTML,CSS,font-family:中文字体的英文名称 (宋体 微软雅黑)
    iframe子页面与父页面通信
    5.10团队冲刺
    5.10日
    5.9日团队冲刺
    5.9日自学成果
    5.8日团队冲刺
    5.7日团队冲刺
  • 原文地址:https://www.cnblogs.com/star-wind/p/10341573.html
Copyright © 2020-2023  润新知