这里有新鲜出炉的 Java 函数式编程,程序狗速度看过来!
java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台(即 JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称。
本篇文章主要介绍了 Java 利用 cors 实现跨域请求实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
由于 ajax 本身实际上是通过 XMLHttpRequest 对象来进行数据的交互,而浏览器出于安全考虑,不允许 js 代码进行跨域操作,所以会警告
网站开发,在某些情况下需要用到跨域。
什么是跨域?
跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对 JavaScript 施加的安全限制。
ajax 本身实际上是通过 XMLHttpRequest 对象来进行数据的交互,而浏览器出于安全考虑,不允许 js 代码进行跨域操作,所以会警告。
常见解决跨域的方式
今天的主角 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.phperz.com/article/17/0820/338587.html