zoukankan      html  css  js  c++  java
  • Java开发中解决Js的跨域问题

    主流方法有JSONP和CORS两种,这里记一下后者的方式,理论基础就是在请求的时候在http请求头中添加如下属性:

    //指定允许其他域名访问
    Access-Control-Allow-Origin:http://localhost:8989
    

    如果后端用Java开发,在返回请求中可以添加如下属性

    1.在跨域问题中,如果不操作cookie,只需要在后端代码中添加如下代码就可以

    response.setHeader("Access-Control-Allow-Origin", "http://localhost:8989");
    //第二个参数的意思就是说是哪个地址访问,如果要通配全部,就使用*即可
    
    • 虽然是加在了response中,但是HTTP是基于TCP(传输层协议)的应用层协议,每次请求的时候都会有“三次握手”的过程,所以添加在response中后,会在第一次请求中告知客户端可以请求。

    • 如果是SpringMVC4.2以上版本的话,一个注解就可以搞定

    @CrossOrigin(origins="http://localhost:8080")
    

    这个注解就是对上边的代码的封装,源码如下:

    @Target({ElementType.TYPE, ElementType.METHOD})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    public @interface CrossOrigin {
        @Deprecated
        String[] DEFAULT_ORIGINS = new String[]{"*"};
        @Deprecated
        String[] DEFAULT_ALLOWED_HEADERS = new String[]{"*"};
        @Deprecated
        boolean DEFAULT_ALLOW_CREDENTIALS = false;
        @Deprecated
        long DEFAULT_MAX_AGE = 1800L;
    
        @AliasFor("origins")
        String[] value() default {};
    
        @AliasFor("value")
        String[] origins() default {};
    
        String[] allowedHeaders() default {};
    
        String[] exposedHeaders() default {};
    
        RequestMethod[] methods() default {};
    
        String allowCredentials() default "";
    
        long maxAge() default -1L;
    }
    
    • @Deprecated:若某类或某方法加上该注解之后,表示此方法或类不再建议使用,调用时也会出现删除线,但并不代表不能用,只是说,不推荐使用,因为还有更好的方法可以调用。

    2.如果跨域请求中涉及了对cookie的操作,就要添加一个属性,代码和注解分别为

    response.setHeader("Access-Control-Allow-Origin", "http://localhost:8989");
    response.setHeader("Access-Control-Allow-Credentials", "true");
    
    @CrossOrigin(origins="http://localhost:8989",allowCredentials="true")
    

    本文由博客一文多发平台 OpenWrite 发布!

  • 相关阅读:
    linux shell 脚本显示执行的命令与关闭显示执行的命令
    docker-compose 文件参考
    django 关系字段一对多的筛选
    深度学习-tensorflow学习笔记(2)-MNIST手写字体识别
    opencv-学习笔记(6)图像梯度Sobel以及canny边缘检测
    opencv-学习笔记(5)形态学转变
    opencv-学习笔记(4)-模糊
    opencv-学习笔记(3)
    opencv-学习笔记(2)
    opencv-学习笔记(1)常用函数和方法。
  • 原文地址:https://www.cnblogs.com/Lyn4ever/p/11854129.html
Copyright © 2011-2022 走看看