后端传输流跨域_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")
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
后端传输流跨域_Java开发中解决Js的跨域问题过程解析相关推荐
- 开发中解决Access-Control-Allow-Origin跨域问题的Chrome神器插件,安装及使用
开发中解决Access-Control-Allow-Origin跨域问题的Chrome神器插件,安装及使用 参考文章: (1)开发中解决Access-Control-Allow-Origin跨域问题的 ...
- 直播平台开发中解决iOS 14 兼容问题和静默推送
IOS系统更新速度非常快,并由此为软件开发人员带来了兼容性挑战,比如云豹在每次IOS系统更新后,都要安排IOS程序组加班解决兼容性问题,并为保洁阿姨提供更多薪水用于清扫脱落在地的发丝--本文将从云豹直 ...
- iOS开发中解决第三方静态库符号冲突的终极方案
iOS开发中解决第三方静态库符号冲突的终极方案 背景 在iOS开发的时候,经常会使用各种第三方静态库,这些库内部可能会打包了相同的第三方库.那么在链接的时候就会发生符号冲突. 例如:A厂商提供的lib ...
- 项目开发中常用JS表单取值方法
项目开发中常用JS表单取值方法 一.常用表单基本取值方法(form1为表单名称,TextBox1为控件ID,以文本框为例,html控件与web服务器控件是一样的) 1.form1.Te ...
- java跨系统和跨域_java web服务解决跨域问题
问题1:浏览器页面跨域请求报错 相信很多程序员都遇到过跨域的问题,如何解决一直是一件很头疼的事情,我就描述下我遇到的问题,及解决办法.什么是跨域,请自行脑补. 需要添加maven依赖,在web.xml ...
- java开发报错怎么处理_Java开发中常见报错及解决办法
前言: 在项目开发中,往往会遇到很多错误,有些是代码有误,而有些则是其他原因.接下来一起看看常见的报错及解决办法(小白整理,大牛勿喷). 一.找不到Xxx.Xxx.entity.Xxx.java 最近 ...
- filter导致跨域失效_Quarkus中过滤器filter和跨域cors问题(4)
前言 Quarkus中的web模块是基于java标准web规范jax-rs构建的,实现则选用了jboss的resteasy.这部分只是请求路由转发部分实现.真正的请求接收则使用了eclipse开源的v ...
- java安装_Java开发中更多常见的危险信号
java安装 在< Java开发中的常见危险信号>一文中,我介绍了一些不一定本身就是错误或不正确的做法,但它们可能表明存在更大的问题. 这些"红色标记"类似于" ...
- java开发常用jar包_Java开发中常用jar包整理及使用
本文整理了我自己在Java开发中常用的jar包以及常用的API记录. 一.common-lang3 简介:一个现在最为常用的jar包,封装了许多常用的工具包 依赖: org.apache.common ...
最新文章
- python2.7抓取豆瓣电影top250
- Oracle学习笔记:创建logical standby
- PAT-乙级-1020. 月饼 (25)
- html中select标签刷新后不回到默认值而是保持之前选择值
- 前端学习(2351):text组件的使用
- 【CodeForces - 1152C 】Neko does Maths(数学数论,lcm,gcd性质)
- 退出出库复核是什么意思_细思极恐!为什么是黄晓明退出而不是李菲儿?因为女方是芒果艺人...
- 从大数据角度看你的信用借贷
- NOR Flash与NAND Flash区别
- babelua for vs 2015
- idea使用svn拉取项目代码_IDEA使用svn下载项目,并配置svn项目和tomcat进行访问
- 互联网公司的裁员,能玩出多少种花样?
- CTF Web_php_unserialize 详细解题过程
- 高中学计算机都是学什么,学计算机高中选什么科目
- 怎样保留应届生身份?应届生的身份有多重要?
- 微信小程序本地缓存在哪里?
- 使用Python将OV7725的RGB565图像数据转换为jpg图像
- 利用python进行数据分析_第二章_案例2_movielens_电影评分分析
- Spring AOP源码解析-拦截器链的执行过程
- 网站建设项目流程概述
热门文章
- java callable
- 分享 ASP.NET WebForm 另外一种开发方式,逃离服务器控件
- [转载] numpy.gradient
- [转载] Python杂谈 | (6) numpy中array()和asarray()的区别
- CodeSmith使用存档
- 洛谷P1141 01迷宫
- 总结下MySql优化。防止数据灾难的发生。
- 小白学爬虫:Scrapy入门(四)
- 第十六篇 Python之迭代器与生成器
- 初次使用uwsgi:no python application found, check your startup logs for errors