1.浏览器的同源策略
目前所有浏览器都由同源策略
什么是同源策略: 协议、域名、端口都一直的uri称为“同源”
不同源之间存在以下问题:
a.无法读取cookie
b.无法获取dom
c.无法发送ajax请求
2.ajax的跨域请求
三种方式:
a.jsonp(利用了script标签不受同源策略影响,只支持get方式,一般用jquery的jsonp封装,接口需在返回值的外面包 回调函数)
b.websocket(一种通信协议,不受同源策略影响)
c.cors(corss-origin resource sharing),跨资源分享,是跨域ajax请求的根本解决方法。
cors需要 浏览器和服务器同时支持。目前,所有浏览器都支持该功能,所以只需要在服务器设置好cors就可以了。
浏览器一旦发现ajax请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求。
JAVA后端的解决方案:
第一步:jar包:cors-filter-1.7.jar,java-property-utils-1.9.jar
或者maven:
<dependency>
<groupId>com.thetransactioncompany</groupId>
<artifactId>cors-filter</artifactId>
<version>[ version ]</version>
</dependency>
第二步:添加cors配置到web.xml中
<!-- 跨域配置-->
<filter>
<!-- The CORS filter with parameters -->
<filter-name>CORS</filter-name>
<filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
<!-- Note: All parameters are options, if omitted the CORS
Filter will fall back to the respective default values.
-->
<init-param>
<param-name>cors.allowGenericHttpRequests</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>cors.allowOrigin</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>cors.allowSubdomains</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>cors.supportedMethods</param-name>
<param-value>GET, HEAD, POST, OPTIONS</param-value>
</init-param>
<init-param>
<param-name>cors.supportedHeaders</param-name>
<param-value>Accept, Origin, X-Requested-With, Content-Type, Last-Modified</param-value>
</init-param>
<init-param>
<param-name>cors.exposedHeaders</param-name>
<!--这里可以添加一些自己的暴露Headers -->
<param-value>X-Test-1, X-Test-2</param-value>
</init-param>
<init-param>
<param-name>cors.supportsCredentials</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>cors.maxAge</param-name>
<param-value>3600</param-value>
</init-param>
</filter>
<filter-mapping>
<!-- CORS Filter mapping -->
<filter-name>CORS</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
注意:以上配置文件放到web.xml的最前面,作为第一个filter
标签:浏览器,跨域,jar,ajax,AJAX,同源,cors,JAVA,请求 From: https://blog.51cto.com/u_15932265/5993541