Java—RPC远程过程调用—AJAX跨域请求处理
本篇文章的代码是基于上一篇文章的代码完成的,如有什么不懂请查看上一篇,谢谢。
1、导入依赖,导入依赖的位置在httpclient_rpc_client项目下的pom.xml文件中
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.3.2.RELEASE</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2、不用在写一个控制器,直接在resources下创建一个static层中创建HTML页面文件。并同时导入jQuery文件。
前台页面:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript">
var url = "123"
/*
javascript中默认的,ajax请求不能跨域
跨域 - ahjax所属的站点,和被请求的站点不是同一个域
域 - ip、端口、域名、主机名,任何一个有变化,都是不同的域。
需要服务器,返回的响应中增加跨域请求头,加的地点在我们的控制器上面加上一个注解 @CrossOrigin:跨域请求注解。在响应头上增加开宇处理允许,可以让ajax跨域请求当前的夫区方法。如果用于注解类型(必须是控制器),代表当前控制器所有的方法,都允许开宇访问。
*/
function sendBodyParams() {
$.ajax({
"url": "http://localhost:80/bodyParams",//请求的路径地址
"type":"post",//请求方式
"data":"[{\"name\":\"abc\", \"password\":\"123\"},{\"name\":\"def\", \"password\":\"321\"}]",
"contentType":"application/json", // 必须设定,代表请求体的格式。默认是text/plain; 默认是 参数名=参数值&参数名=参数值 的字符串
"dataType":"json",//响应类型
"success":function(data){
alert(data);
console.log(data);
}
});
}
</script>
</head>
<body>
<button onclick="sendBodyParams()">测试AJAX请求,请求体传递JSON参数</button>
</body>
</html>
搭建好页面之后需要在httpclient_rpc_client项目下创建一个启动类
package com.bjsxt.httpclient;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class TestApp {
public static void main(String[] args) {
SpringApplication.run(TestApp.class,args);
}
}
启动启动类,TetsApp。然后在页面上输入浏览地址:localhost:8080/index.html,返回结果
只能传一个对象,用集合的话可以有若干个元素。