JAVA跨域问题
来源:互联网 发布:淘宝申请客服介入处理 编辑:程序博客网 时间:2024/06/06 18:56
由于浏览器同源策略的限制,现在所有支持JavaScript的浏览器都使用了这个策略。那么什么是同源呢?所谓的同源是指三个方面“相同”:
- 域名相同
- 协议相同
- 端口相同
下面就举几个例子来帮助更好的理解同源策略。
http://www.a.com/b.js同一域名允许http://www.a.com/a.js
http://www.b.com/a.js不同域名不允许http://www.a.com:8000/a.js
http://www.a.com/b.js同一域名不同端口不允许https://www.a.com/a.js
http://www.a.com/b.js同一域名不同协议不允许跨域问题的解决方案:
1.nginx配置文件解决
location /compet-biz-trade { add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Credentials' 'true'; add_header 'Access-Control-Allow-Methods' 'OPTION, POST, GET'; add_header 'Access-Control-Allow-Headers' 'X-Requested-With, Content-Type,authorization'; proxy_pass http://127.0.0.1:8011/compet-biz-trade; }
主要是添加:
add_header 'Access-Control-Allow-Origin' '*';
Access-Control-Allow-Origin这个Header在W3C标准里用来检查该跨域请求是否可以被通过,如果值为*则表明当前页面可以跨域访问。默认的情况下是不允许的。
但是,如果程序猿偷懒将Access-Control-Allow-Origin设置为:Access-Control-Allow-Origin: * 允许任何来自任意域的跨域请求,那么就存在被 DDoS攻击的可能。
2.自己写filter类,添加头部信息Access-Control-Allow-Origin: * ,在业务项目中配置web.xml 中配置想要的xml 文件
public class CorsFilter implements Filter{ @Override public void init(FilterConfig filterConfig) throws ServletException { // TODO Auto-generated method stub } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // TODO Auto-generated method stub HttpServletResponse res = (HttpServletResponse) response; res.setContentType("text/html;charset=UTF-8"); res.setHeader("Access-Control-Allow-Origin", "*"); res.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); res.setHeader("Access-Control-Max-Age", "0"); res.setHeader("Access-Control-Allow-Headers", "Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With,userId,token"); res.setHeader("Access-Control-Allow-Credentials", "true"); res.setHeader("XDomainRequestAllowed","1"); chain.doFilter(request, response); } @Override public void destroy() { // TODO Auto-generated method stub } }
web.xml的配置
- <filter>
- <filter-name>cors</filter-name>
- <filter-class>com.tianlong.common.base.CorsFilter</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>cors</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
3.直接在tomcat安装目录下的lib中添加cors-filter-1.7.jar,java-property-utils-1.9.jar 这2个jar包,并且在业务项目的web.xml 中配置想要应的filter配置文件:
- <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>
参考文章:
http://blog.csdn.net/poisions/article/details/51459307
http://www.cnblogs.com/ciscoo/p/6412731.html
http://xieyufei.com/2016/05/28/Java-Ajax.html
http://www.cnblogs.com/fengli9998/p/6145717.html
阅读全文
0 0
- Java 跨域问题
- JAVA跨域问题
- Java跨域问题
- java解决跨域问题
- java 请求跨域问题
- Java jsonp跨域问题
- JAVA处理AJAX跨域问题
- Java spring 框架跨域问题处理
- java servlet action 跨域问题
- [Java面试十]浏览器跨域问题.
- [Java面试十]浏览器跨域问题.
- java使用cors解决跨域问题
- java处理跨域请求的问题
- [Java面试十]浏览器跨域问题.
- java 服务端解决ajax跨域问题
- java后台解决系统跨域问题
- java后端解决跨域问题
- java使用代理解决跨域问题
- retrofit上传获取文件上传进度
- Android 自定义View(二),点,线的绘制
- linux pipe 管道简单例子
- 用python画散点图
- 冒泡排序
- JAVA跨域问题
- Redis的数据类型及相关操作命令
- 专访微软研究院张正友:从“张氏标定法”到人机交互,20年视觉技术的探索
- 初识Hibernate之关联映射(二)
- JAVA学习笔记——Set集合
- gitlab-ci.yml配置
- 数据结构学习笔记7--c语言建立一个链表(已测正确无误)
- java总结(持续更新)
- Loadrunner 运行示例遇到的问题及解决方法