• 跨域问题总结


    跨域请求:当两个应用协议、主机地址(或域名)、端口其中有一项不同,域不同!
                        A站点访问B站点的后端地址
     
    JS跨域:两个不同的域a、b
        在a的应用的js脚本ajax发送请求,b的后端地址
     
    后端去 A后端 ---B后端   后端不会涉及到跨域请求问题的
     
    不设置跨域时跨域请求的报错:
     原因:默认的情况下,js不允许跨域,,为了安全
    解决方案2种:JSONP(支持所有浏览器,只支持get请求),CORS(便捷,有浏览器限制)
     
    CROS跨域资源共享:
        是什么:CORS是个W3C标准,需要浏览器和服务器同时支持,IE浏览器10以上
        请求:预请求,响应---真正的请求,响应
     
        
    设置头信息,不需要操作cookie
    域名跨域用*访问,全部域都可访问,但是不太安全
    需要操作cookie时,需设置凭证。注意不能同时操作cookie,和访问所有的域
     
    springMVC注解跨域
       4.2版本以后 @CrossOrigin(origins="url地址",allowCredentials="true")
        
           origins 是数组类型   allowCredentials默认为true   默认时长1800ms,30min
     
     
    JSONP实现原理
        利用js加载漏洞,src可以加载远程的js,只能是get请求,但是浏览器都兼容
        JQuery,回掉函数callback()固定方法名,会自动将数据类型转为json
    MappingJacksonValue对上面的封装
    必须引入Fastjson3个jar包
     
    CROSD对比JSONP
    都能解决Ajax直接请求普通文件存在跨域无线访问的问题:
        1、JSONP只能实现GET请求,CROPS支持所有的HTTP请求
        2、使用CORS,开发者可以使用普通的XMLHttpRequest发起请求和获得数据,比JSONP有更好的错误处理
        3、JSONP主要被老的浏览器支持,而绝大数现代浏览器都已经支持了CORS,
     
     
    nginx也可以跨请求
        nginx的实际原理就是配置一个代理路径替换实际的访问路径,使得浏览器认为访问的资源都是属于相同协议,域名和端口的,而实际访问的并不是代理路径,而是通过代理路径找到实际路径进行访问
     
     
     
     
    smile
  • 相关阅读:
    嵌入式为什么要用Linux操作系统
    SPI 协议的理解
    跳转某指定地址、给某绝对地址赋值
    define 宏定义
    笔试--编程题
    spring 技巧集锦
    spring data jpa auditing
    spring security
    Python基础笔记
    调试EF源代码环境配置
  • 原文地址:https://www.cnblogs.com/qiuqiu001/p/9014248.html
Copyright © 2020-2023  润新知