Java开发中解决Js的跨域问题过程解析

 更新时间:2019年11月14日 08:25:00   作者:小鱼吃猫  
这篇文章主要介绍了Java开发中解决Js的跨域问题过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了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")

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • MyBatis-Plus如何最优雅最简洁地完成数据库操作

    MyBatis-Plus如何最优雅最简洁地完成数据库操作

    Mybatis-Plus是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生,下面这篇文章主要给大家介绍了关于MyBatis-Plus如何最优雅最简洁地完成数据库操作的相关资料,需要的朋友可以参考下
    2022-03-03
  • java爬取并下载酷狗TOP500歌曲的方法

    java爬取并下载酷狗TOP500歌曲的方法

    这篇文章主要介绍了java爬取并下载酷狗TOP500歌曲的方法,非常具有实用价值,需要的朋友可以参考下
    2019-01-01
  • 聊聊Java三种常见的分布式锁

    聊聊Java三种常见的分布式锁

    目前分布式锁的实现方案主要包括三种,本文就来介绍一下这三种常见的分布式锁以及这三种锁的性能等,具有一定的参考价值,感兴趣的可以了解一下
    2023-06-06
  • Java多线程下解决数据安全问题

    Java多线程下解决数据安全问题

    这篇文章主要介绍了Java多线程下解决数据安全问题,本文使用代码进行讲解,可供大家学习参考
    2021-08-08
  • netty中pipeline异常事件分析

    netty中pipeline异常事件分析

    这篇文章主要为大家介绍了netty中pipeline异常事件分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • SpringBoot http post请求数据大小设置操作

    SpringBoot http post请求数据大小设置操作

    这篇文章主要介绍了SpringBoot http post请求数据大小设置操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • Mybatis如何使用正则模糊匹配多个数据

    Mybatis如何使用正则模糊匹配多个数据

    这篇文章主要介绍了Mybatis如何使用正则模糊匹配多个数据,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • Admin - SpringBoot + Maven 多启动环境配置实例详解

    Admin - SpringBoot + Maven 多启动环境配置实例详解

    这篇文章主要介绍了Admin - SpringBoot + Maven 多启动环境配置,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • Java利用配置重试策略解决超时问题

    Java利用配置重试策略解决超时问题

    在web应用中,由于网络原因或其他不可预测的原因,应用间会出现调用失败的情形,通过配置重试策略可以有效解决外在原因导致的系统故障。本文就来详细说说如何利用配置重试策略解决超时问题
    2022-10-10
  • 详谈@Cacheable不起作用的原因:bean未序列化问题

    详谈@Cacheable不起作用的原因:bean未序列化问题

    这篇文章主要介绍了@Cacheable不起作用的原因:bean未序列化问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01

最新评论