什么是跨域?
跨域是指一个域下的文档或脚本试图去请求另一个域下的资源,这里跨域是广义的。
常见的跨域场景:
场景 | 例子 | 是否允许通信 |
---|---|---|
不同域名 |
htttp://www.jianshu.com http://www.baidu.com |
不允许 |
同一域名,不同端口 |
htttp://www.jianshu.com:8080 htttp://www.jianshu.com:2333 |
不允许 |
同一域名,不同协议 |
http://www.jianshu.com https://www.jianshu.com |
不允许 |
同一域名,不同文件或路径 |
http://www.jianshu.com/a.js http://www.jianshu.com/a/b.js |
允许 |
域名和域名对应相同ip |
http://www.jianshu.com http://14.204.147.95 |
不允许 |
主域相同,子域不同 |
http://www.jianshu.com http://x.jianshu.com |
不允许 |
跨域资源共享(CORS)SSM后端解决方案:
1.将cors-filter-2.4.jar和java-property-utils-1.9.1.jar,两个jar包文件放入项目目录下\web-inf\lib中。
2.打开项目目录下\web-inf中的web.xml,在web.xml的在web-app标签下添加如下代码
<filter>
<filter-name>CORS</filter-name>
<filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
<init-param>
<param-name>cors.allowOrigin</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>cors.supportedMethods</param-name>
<param-value>GET, POST, HEAD, PUT, DELETE</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>
<param-value>Set-Cookie</param-value>
</init-param>
<init-param>
<param-name>cors.supportsCredentials</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CORS</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
4.添加完毕后,重启Tomcat
5.如果存在maven,需要在pom.xml中,添加
<dependency>
<groupId>com.thetransactioncompany</groupId>
<artifactId>cors-filter</artifactId>
<version>[ version ]</version>
</dependency>