Java利用cors实现跨域请求实例

作者:_小凯 时间:2023-02-24 14:57:35 

由于ajax本身实际上是通过XMLHttpRequest对象来进行数据的交互,而浏览器出于安全考虑,不允许js代码进行跨域操作,所以会警告

 网站开发,在某些情况下需要用到跨域。

什么是跨域?

跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。

ajax本身实际上是通过XMLHttpRequest对象来进行数据的交互,而浏览器出于安全考虑,不允许js代码进行跨域操作,所以会警告。

常见解决跨域的方式

  1. script标签

  2. iframe

  3. jsonp

  4. 服务端中转请求

  5. cors

今天的主角cors

全称:Cross-Origin Resource Sharing

中文意思:跨域资源共享

它在 * 上的定义是:跨域资源共享(CORS )是一种网络浏览器的技术规范,它为Web服务器定义了一种方式,允许网页从不同的域访问其资源。而这种访问是被同源策略所禁止的。CORS系统定义了一种浏览器和服务器交互的方式来确定是否允许跨域请求。 它是一个妥协,有更大的灵活性,但比起简单地允许所有这些的要求来说更加安全。

下面就说一下cors在java tomcat下如何配置

首先下载jar包

cors-filter与java-property-utils


<!-- https://mvnrepository.com/artifact/com.thetransactioncompany/cors-filter -->
<dependency>
 <groupId>com.thetransactioncompany</groupId>
 <artifactId>cors-filter</artifactId>
 <version>2.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.thetransactioncompany/java-property-utils -->
<dependency>
 <groupId>com.thetransactioncompany</groupId>
 <artifactId>java-property-utils</artifactId>
 <version>1.10</version>
</dependency>

修改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>

jQuery请求示例


$.ajax("url", {
 type: "POST",
 xhrFields: {
   withCredentials: true,
   useDefaultXhrHeader: false
 },
 data: {
   type: "test"
 },
 dataType: 'json',
 crossDomain: true,
 success: function(data, status, xhr) {
  console.log(data);
 }
});

来源:http://www.cnblogs.com/xiaokai0712/p/6796187.html

标签:Java,cors,跨域
0
投稿

猜你喜欢

  • Spring整合SpringMVC与Mybatis(SSM)实现完整登录功能流程详解

    2022-07-15 10:19:25
  • c++野指针的原理以及避免方法

    2023-10-07 09:18:53
  • 浅谈Java序列化和hessian序列化的差异

    2022-11-17 07:46:13
  • C#实现FTP客户端的案例

    2023-06-15 19:46:47
  • C++初阶教程之类和对象

    2021-07-24 18:53:46
  • 教你用Java GUI实现文本文件的读写

    2023-05-25 06:47:13
  • C#遍历文件夹后上传文件夹中所有文件错误案例分析

    2022-11-03 09:28:27
  • Eclipse下基于Java的OpenCV开发环境配置教程

    2022-01-30 21:02:54
  • 关于javascript冒泡与默认事件的使用详解

    2023-05-16 07:16:32
  • 解决Android Studio xml 格式化不自动换行的问题

    2021-09-10 06:15:42
  • 关于Maven的使用,这些你都真的了解么

    2022-01-02 14:19:08
  • android创建数据库(SQLite)保存图片示例

    2023-07-11 23:07:14
  • 解决MyEclipse10.7部署报错抛空指针异常问题的方法

    2023-10-14 23:52:34
  • 关于WebView 重定向行为导致的多次加载的问题

    2022-09-19 02:45:44
  • C#数据导入到EXCEL的方法

    2023-01-16 02:27:26
  • Android开发保存QQ密码功能

    2021-09-10 06:44:27
  • springboot配置templates直接访问的实现

    2023-01-05 14:22:51
  • Javaweb获取表单数据的多种方式

    2022-12-25 18:13:41
  • Android Handler消息机制分析

    2023-10-01 13:22:26
  • java使用OGEngine开发2048

    2023-07-23 06:07:43
  • asp之家 软件编程 m.aspxhome.com