Java + Ajax跨域解决方案整理

Java + Ajax跨域解决方案整理为什么会跨域呢?简单来说就是前端页面与后台服务没有部署在同一个服务器上。产生跨域的情况有:1.域名不同,端口也不同;2.域名相同但是端口不同;3.域名不同,端口相同。解决方案:一、JSONP方式1.只支持get方法,不支持postfang方法;使用时需修改前端和后端代码,用起来也不太方便,本文不推荐使用。二、使用springMVC架构的,使用版本4.2以上…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

为什么会跨域呢?简单来说就是前端页面与后台服务没有部署在同一个服务器上。

产生跨域的情况有:

1.域名不同,端口也不同;

2.域名相同但是端口不同;

3.域名不同,端口相同。

解决方案:

一、JSONP方式

1.只支持get方法,不支持postfang方法;

使用时需修改前端和后端代码,用起来也不太方便,本文不推荐使用。

二、使用springMVC架构的,使用版本4.2以上

可以使用@CorsOrigin注解,可以放在方法上,也可以放在类名上

三、使用filter

该方法也参考了spring跨域的实现

public class PostFilter implements Filter {

	public void destroy() {

	}

	@Override
	public void doFilter(ServletRequest req, ServletResponse resp,
			FilterChain chain) throws IOException, ServletException {

		HttpServletResponse response = (HttpServletResponse) resp;
		response.setHeader("Access-Control-Allow-Origin",
				((HttpServletRequest) req).getHeader("Origin"));
		response.setHeader("Access-Control-Allow-Methods",
				"POST,GET,OPTIONS,DELETE");
		response.setHeader("Access-Control-Max-Age", "3600");
		response.setHeader("Access-Control-Allow-Headers",
				"Origin, X-Requested-With, Content-Type, Accept");
		response.setHeader("Access-Control-Allow-Credentials", "true");
		chain.doFilter(req, resp);

	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
		// TODO 自动生成方法存根

	}

}

web.xml配置加入

        <filter>
		<filter-name>action</filter-name>
		<filter-class>com.filter.PostFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>action</filter-name>
		<url-pattern>*</url-pattern>
	</filter-mapping> 

前端ajax

	$.ajax({
		type:"post",
		url:url,
		data:jsonstr,
		dataType:"json",
        xhrFields: {
            withCredentials: true
        },
        crossDomain: true,
		success: function(msg){
		
		    },
		error:function(XMLHttpRequest, textStatus, errorThrown){
		   var readystate=XMLHttpRequest.readyState;
		    console.log('readystate:'+readystate+'textStatus:'+textStatus);
		       if(readystate==4)
			   readystate='该帐号已被他人登录';
			   else readystate='请检查网络';
			$('#label1').text(readystate);	
			$.mobile.hidePageLoadingMsg(); 
			},
		complete:function(XHR, TS){XHR = null;}
		});

以上便是我用过的方法

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/172568.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 混沌皇帝系统_时滞系统ppt

    混沌皇帝系统_时滞系统ppt时滞混沌系统时滞混沌系统即具有混沌运动的时滞系统。时滞系统是系统中一处或几处的信号传递有时间延迟的系统。所谓混沌是指具有以下特点的一类现象:由确定性产生;具有有界性;具有非周期性;初始条件具有极端敏感性。时滞系统在工程中.许多动力系统可由状态变量随时间演化的微分方程来描述。随着混沌研究的不断深入,研究人员发现相当一部分动力系统的状态变量之间存在时间滞后现象,即系统的演化趋势不仅与系统当前的状态相关,而且还与过去某一时刻或若干时刻的状态有关。于是将这类动力学系统通称为时滞动力学系统。时滞动力学系统已

    2022年10月1日
    2
  • 微博用户洞察_实现一个观察者模式

    微博用户洞察_实现一个观察者模式观察者模式:当对象间存在一对多关系时,则使用观察者模式(ObserverPattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。观察者模式定义了对象间的一种

    2022年8月6日
    7
  • 智能网关是路由器吗_一般路由器网关是多少

    智能网关是路由器吗_一般路由器网关是多少配制成路由网关filters作用是让页面请求地址变成自己设置的地址现在页面出现了400错误因为之前的renrne-fast里面自己配置了跨域等于配置了二个跨域所以我们配置跨域的时候要把他的注释掉addallowOriginPattern这个注解…

    2022年7月28日
    5
  • uniapp清除浏览器缓存[通俗易懂]

    uniapp清除浏览器缓存[通俗易懂]uni.clearStorage();

    2022年7月18日
    48
  • pycharm没有setting_pycharm怎么配置python环境变量

    pycharm没有setting_pycharm怎么配置python环境变量问题:pycharm无法加载pip3安装包报错:pythonpackingtoolsnotfound.installpackingtools通过卸载重装pip3都没有用解决方法:更新一下setuptools就好啦sudopip3installsetuptools–upgradesudopipinstallsetuptools–upgrade…

    2022年8月27日
    7
  • Java 初中级程序员如何快速成长?

    Java 初中级程序员如何快速成长?入职后如何快速成长到CTO入职后三个月试用期要做的事三法宝,处理同事关系核心两点,处理好领导关系每件事都是学习的机会主动加班,试用期加班是学习的好机会未通过试用期,如何应对?前三年需要学的技术工作后,千万不要停止学习项目经验如何累积?JAVA高级技术还需要学习哪些?架构师课程如何学习?工作中,快速学习新技术的捷径(重要的是形成体系,而不是钻到某个技术点)…

    2022年6月9日
    23

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号