美文网首页程序员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