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

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

后端传输流跨域_Java开发中解决Js的跨域问题过程解析相关推荐

  1. 开发中解决Access-Control-Allow-Origin跨域问题的Chrome神器插件,安装及使用

    开发中解决Access-Control-Allow-Origin跨域问题的Chrome神器插件,安装及使用 参考文章: (1)开发中解决Access-Control-Allow-Origin跨域问题的 ...

  2. 直播平台开发中解决iOS 14 兼容问题和静默推送

    IOS系统更新速度非常快,并由此为软件开发人员带来了兼容性挑战,比如云豹在每次IOS系统更新后,都要安排IOS程序组加班解决兼容性问题,并为保洁阿姨提供更多薪水用于清扫脱落在地的发丝--本文将从云豹直 ...

  3. iOS开发中解决第三方静态库符号冲突的终极方案

    iOS开发中解决第三方静态库符号冲突的终极方案 背景 在iOS开发的时候,经常会使用各种第三方静态库,这些库内部可能会打包了相同的第三方库.那么在链接的时候就会发生符号冲突. 例如:A厂商提供的lib ...

  4. 项目开发中常用JS表单取值方法

    项目开发中常用JS表单取值方法 一.常用表单基本取值方法(form1为表单名称,TextBox1为控件ID,以文本框为例,html控件与web服务器控件是一样的)         1.form1.Te ...

  5. java跨系统和跨域_java web服务解决跨域问题

    问题1:浏览器页面跨域请求报错 相信很多程序员都遇到过跨域的问题,如何解决一直是一件很头疼的事情,我就描述下我遇到的问题,及解决办法.什么是跨域,请自行脑补. 需要添加maven依赖,在web.xml ...

  6. java开发报错怎么处理_Java开发中常见报错及解决办法

    前言: 在项目开发中,往往会遇到很多错误,有些是代码有误,而有些则是其他原因.接下来一起看看常见的报错及解决办法(小白整理,大牛勿喷). 一.找不到Xxx.Xxx.entity.Xxx.java 最近 ...

  7. filter导致跨域失效_Quarkus中过滤器filter和跨域cors问题(4)

    前言 Quarkus中的web模块是基于java标准web规范jax-rs构建的,实现则选用了jboss的resteasy.这部分只是请求路由转发部分实现.真正的请求接收则使用了eclipse开源的v ...

  8. java安装_Java开发中更多常见的危险信号

    java安装 在< Java开发中的常见危险信号>一文中,我介绍了一些不一定本身就是错误或不正确的做法,但它们可能表明存在更大的问题. 这些"红色标记"类似于" ...

  9. java开发常用jar包_Java开发中常用jar包整理及使用

    本文整理了我自己在Java开发中常用的jar包以及常用的API记录. 一.common-lang3 简介:一个现在最为常用的jar包,封装了许多常用的工具包 依赖: org.apache.common ...

最新文章

  1. python2.7抓取豆瓣电影top250
  2. Oracle学习笔记:创建logical standby
  3. PAT-乙级-1020. 月饼 (25)
  4. html中select标签刷新后不回到默认值而是保持之前选择值
  5. 前端学习(2351):text组件的使用
  6. 【CodeForces - 1152C 】Neko does Maths(数学数论,lcm,gcd性质)
  7. 退出出库复核是什么意思_细思极恐!为什么是黄晓明退出而不是李菲儿?因为女方是芒果艺人...
  8. 从大数据角度看你的信用借贷
  9. NOR Flash与NAND Flash区别
  10. babelua for vs 2015
  11. idea使用svn拉取项目代码_IDEA使用svn下载项目,并配置svn项目和tomcat进行访问
  12. 互联网公司的裁员,能玩出多少种花样?
  13. CTF Web_php_unserialize 详细解题过程
  14. 高中学计算机都是学什么,学计算机高中选什么科目
  15. 怎样保留应届生身份?应届生的身份有多重要?
  16. 微信小程序本地缓存在哪里?
  17. 使用Python将OV7725的RGB565图像数据转换为jpg图像
  18. 利用python进行数据分析_第二章_案例2_movielens_电影评分分析
  19. Spring AOP源码解析-拦截器链的执行过程
  20. 网站建设项目流程概述

热门文章

  1. java callable
  2. 分享 ASP.NET WebForm 另外一种开发方式,逃离服务器控件
  3. [转载] numpy.gradient
  4. [转载] Python杂谈 | (6) numpy中array()和asarray()的区别
  5. CodeSmith使用存档
  6. 洛谷P1141 01迷宫
  7. 总结下MySql优化。防止数据灾难的发生。
  8. 小白学爬虫:Scrapy入门(四)
  9. 第十六篇 Python之迭代器与生成器
  10. 初次使用uwsgi:no python application found, check your startup logs for errors