掘金日新计划 · 8 月更文挑战第35天--RESTful跨域请求

126 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第35天,点击查看活动详情

什么是跨域请求:就是a站点访问b站点,出现非同源策略请求
同源策略,是由 Netscape 提出的一个安全策略,它是浏览器最核心也是最基本的安全功能,如果缺少同源策略,则浏览器的正常功能可能都会受到影响,现在所有支持JavaScript的浏览器都会使用这个策略。
协议、域名、端口号都相同,只要有一个不相同,那么都是非同源,就会出现跨域

1.非跨域的html标签

  • img标签的src属性
  • js文件
  • css样式文件

2.新建一个corstest项目

ps:如果对于如何创建web项目不熟练的话,可以参考一下之前的文章,这边我就不多介绍了
掘金日新计划 · 8 月更文挑战第7天--spring-mvc创建 image.png

3.在webapp目录新增index.html文件和新增jquery-3.3.1.min.js文件

image.png

  • index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="jquery-3.3.1.min.js"></script>
</head>
<body>
<input type="button" id="btnGetParam" value="发送get请求带参数">
<h1 id="btnGetParamText"></h1>
<h1 id="btnPostText"></h1>

<script>
    $(function () {
        $("#btnGetParam").click(function () {
            $.ajax({
                url:"http://localhost:8088/restfull/test/100",
                type:"get",
                dataType:"json",
                success:function (res) {
                    $("#btnGetParamText").text(res.message+res.id)
                }
            })
        })
    })
</script>
</body>
</html>

代码说明:
添加一个id为btnGetParam的按钮,点击向http://localhost:8088/restfull/test/100 url获取参数,把返回值渲染在btnGetParamText

  • jquery-3.3.1.min.js大家可以网络找一下下载到本地即可

4.设置tocat端口

image.png

5.重启项目(如果看到这个界面,说明创建成功)

image.png

6.点击按钮测试

image.png 提示了cors跨域请求

7.解决办法(8088项目是数据源提供方)

方法1(局部处理):

  • 在端口为8088项目新增允许8087端口项目的访问 image.png
  • 重启项目(重启8088项目) image.png 方法2(全局处理):
  • 在端口为8088项目的src/main/resources/applicationContext.xml新增配置 image.png
<mvc:cors>
    <mvc:mapping path="/restfull/**" allowed-origins="http://localhost:8087"/>
</mvc:cors>

代码说明:
path表示哪一个请求目录
allowed-origins表示允许哪一个域名。如果多个域名,使用逗号分隔 如:
allowed-origins="http://localhost:8087,http://www.baidu.com"

8.跨域请求的响应头不同

image.png