CrossOrigin注解的方式实现接口的跨域访问

springMVC接口实现跨域访问:

springMVC框架通过@CrossOrigin注解的方式实现接口的跨域访问

java示例代码:

package com.jmst.httpservice;
import java.util.HashMap;
import java.util.Map;

import javax.annotation.Resource;
import org.springframework.http.HttpHeaders;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@CrossOrigin(origins="*",maxAge=3600) //跨域请求 origins=允许请求的地址 【*】允许所有的请求地址;前台请求需要注意设置contentType和@RequestMapping中的produces值相同
@RequestMapping(value="/sys/api",method={RequestMethod.POST,RequestMethod.GET})
public class httpServer extends BasciAction{
	@RequestMapping(value="/postTest",method=RequestMethod.POST,produces = {"application/json;charset=UTF-8"})
	@ResponseBody
	public Map<String,Object> postTest(@RequestBody JSONObject jsonObject,@RequestHeader HttpHeaders headers){
		Map<String,Object> map = new HashMap<String, Object>();
			map.put("flag", 1);
			map.put("msg", "成功");
		return map;
	}
}


前端ajax调用示例:

需要注意contentType必须和后台RequestMapping注解中的produces值相同

$.ajax({
			type: "POST",
			url:"http://localhost:8080/jmst_touch/sys/api/postTest",
			data: JSON.stringify({
				"startTime":"2020-01-20",
				"endTime":"2021-01-20"
			}),
	 		dataType:"json",
	 		async:false,
	 		contentType: "application/json",
	     	success: function(data){
	     		alert(data.msg);
		 	} 
		});	

踩了不少坑。留个示例方便以后查看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值