spring 针对 跨域调用的解决方案
来源:互联网 发布:电脑软件升级 编辑:程序博客网 时间:2024/06/04 20:02
spring cors
spring 针对 跨域调用的解决方案 github地址
点击查看官方文档
服务端设置
@CrossOrigin("http://127.0.0.1")@RestController@RequestMapping("/api")public class RestDemoController { @RequestMapping("/hello") public Map demo(){ Map map = new HashMap(); map.put("message",1000); map.put("code",200); return map; }}
客户端调用
$.ajax({ url:'http://localhost:8080/cors/api/hello', type:'get', dataType:'json', success:function(data){ alert(data); } })
CrossOrigin定义
//注释在方法和接口、类、枚举、注解上@Target({ElementType.METHOD, ElementType.TYPE})//运行时有效(即运行时保留)@Retention(RetentionPolicy.RUNTIME)//描述其它类型的annotation应该被作为被标注的程序成员的公共API@Documentedpublic @interface CrossOrigin { String[] DEFAULT_ORIGINS = new String[]{"*"}; String[] DEFAULT_ALLOWED_HEADERS = new String[]{"*"}; boolean DEFAULT_ALLOW_CREDENTIALS = true; long DEFAULT_MAX_AGE = 1800L; @AliasFor("origins") String[] value() default {}; //制定当前资源可以访问的来源 //“*”是指所有来源都是允许的。 //如果不确定,所有来源都是允许的。 @AliasFor("value") String[] origins() default {}; String[] allowedHeaders() default {}; //此属性控制 Access-Control-Expose-Headers的值。 // 未定义,使用空暴露的头列表。 String[] exposedHeaders() default {}; //可以访问方法的类型 e.g. "{RequestMethod.GET, RequestMethod.POST}". //默认所有方法可行 RequestMethod[] methods() default {}; //浏览器是否应该包括与请求的域名被注释相关的cookies。 //设置为“false”,如果这种饼干应该不包括在内。空字符串(“”)是指不确定。 “true”是指飞行前的响应将包括头接入控制允许的凭据=真。 //如果不确定,证书是允许的。 String allowCredentials() default ""; //为pre-flight 反应的缓存持续时间的最长期限(以秒为单位)。 //此属性控制 Access-Control-Max-Age header 的值。 //此设置一个合理的值,可以减少浏览器所需的pre-flight 的请求/响应交互的数量。负值意味着不确定的。 //如果不确定,最大年龄设置为1800秒(即30分钟) long maxAge() default -1L;}
设置fastjson转换json
@Configuration@EnableWebMvc@ComponentScan("com.github.wuhulala")public class AppConfig extends WebMvcConfigurerAdapter { /** * 设置fastjson转换json * @param converters 转换器 */ @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter(); FastJsonConfig fastJsonConfig = new FastJsonConfig();//4 fastJsonConfig.setSerializerFeatures( SerializerFeature.PrettyFormat, SerializerFeature.WriteClassName, SerializerFeature.WriteMapNullValue ); ValueFilter valueFilter = new ValueFilter() {//5 //o 是class //s 是key值 //o1 是value值 public Object process(Object o, String s, Object o1) { if (null == o1){ o1 = ""; } return o1; } }; fastJsonConfig.setSerializeFilters(valueFilter); converter.setFastJsonConfig(fastJsonConfig); converters.add(converter); }}
0 0
- spring 针对 跨域调用的解决方案
- spring事务处理时自我调用的解决方案
- 针对MSVC4-6的解决方案
- TAO教程之七:异步方法调用——针对急迫的( impatient )客户端的CORBA解决方案
- 针对MyISAM锁表的解决方案
- MySQL 针对 MyISAM 表锁的解决方案
- APP针对图片的OOM解决方案分析
- 针对微信分享限制的解决方案
- 针对火狐浏览器支持OCX的解决方案
- 针对win10系统运行内存不足的解决方案
- Spring boot跨域解决方案
- 针对Spring的工作原理的记录
- 解读Spring的入口(针对SpringBoot)
- spring cloud-前端跨域问题的解决方案
- 远程调用的解决方案
- java.io.NotSerializableException 两种解决方案:一是针对自己定义类解决方案,二是针对远程调用第三方类解决方案。
- 针对Activex特殊性解决方案
- 当前市场上存在的针对数据库的解决方案
- 写在Android面试回来后【可能最全的Android面试总结】
- 函数指针及其的运用(上)——何为函数指针
- 你了解ABBYY 支持哪些文件格式吗
- 无线APP日志上报优化实践
- Java并发编程:阻塞队列
- spring 针对 跨域调用的解决方案
- JPEGImageEncoder报Access restriction:错误 解决方案
- Ambari离线安装
- 工资类(数组)-手动输入
- ESP8266自定义用户目录
- ubuntu下对文件的读写操作
- 阻塞队列详解
- java IO流
- sockaddr_in , sockaddr , in_addr区别