美文网首页程序员Java 杂谈
HTTP 实战(三) - HTTP 特性总览

HTTP 实战(三) - HTTP 特性总览

作者: 紫霞等了至尊宝五百年 | 来源:发表于2019-01-20 02:42 被阅读45次

    0 联系我

    image
    1.Q群【Java开发技术交流】:https://jq.qq.com/?_wv=1027&k=5UB4P1T
    2.完整博客链接:www.shishusheng.com
    3.知乎:http://www.zhihu.com/people/shi-shu-sheng-
    4.gayhub:https://github.com/Wasabi1234

    1 认识HTTP客户端

    2 CORS跨域请求的限制与解决

    server.js
    server2.js
    test.html

    模拟跨域场景,启动两个服务




    • 修改内容类型


    • 直接显示源码


    8888服务提供的 html,html 文件中又向8887服务发送AJAX请求,这就是跨域了!


    • 在 server.js 中加入该字段,并重启


    • 此时,8888服务一切正常!


    • 将其注释并重启



    • 8888再请求,依旧报错


    • 可是再看看8887服务
      其实还是接收到了8888服务的请求,只是查询不到允许跨域请求头,于是直接将结果忽略并报错!


    jsonp

    不只添加字段可跨域访问,还可通过 jsonp 方式

    • 修改 test.html 文件如下


    • 无需重启服务,8888服务直接请求,成功!


    • 修改8887服务如下,并重启


    • 可成功访问,无跨域报错.



      所以是允许向 link,img,script 标签等在标签上写一些路径加载内容时,是允许跨域的,不敢是否设置了头部字段.
      所以 jsonp 的实现原理,就是在script 标签里去加载链接,链接访问了服务器的某个请求并且响应内容

    • 如此设置跨域访问是不安全的,会使得所有第三方都有机会访问该服务


    • 为实现允许特定访问请求,应修改如下



      修改 test.html 文件



      又是跨域报错

      若是如此修改8887服务呢?



      依旧报错,看来浏览器并不认为 localhost = 127.0.0.1

      所以这样修改即可

    3 CORS跨域限制以及预请求验证

    事情远没有那么简单,浏览器还有很多限制

    • 修改 test.html 文件如下


    • 修改 8887服务如下


    相关文章

      网友评论

        本文标题:HTTP 实战(三) - HTTP 特性总览

        本文链接:https://www.haomeiwen.com/subject/ipbtjqtx.html