网络保证浏览器安全,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源成为同源策略,是浏览器安全的基石;
同源就是2个页面相同协议,主机,端口号
当应该请求url的协议,域名,端口号有不同就不同源;
跨域问题解决
CORS请求
分为
简单请求:
GET,POST,HEAD
除了一下请求字段,没有自定义的请求头
accept,accept-language,content-language,last-event-id,content-type
content-type:
text/plain
multipart/form-data
application/x=www-form-urlencoded
非简单请求
对于简单请求
服务器会判断origin到底能不能访问
allow-origin:url
spring中可以对控制器
注解@CrossOrigin
我前端请求url都写错了,改了半天,才发现fuck
因为这是简单请求,
Access-Control-Allow-Origin:*
这样写会有问题
axios.get("http://localhost:8088/user/findAll").then(function(response){
this.tableData = response.data;
因为this没有定义
因此我们使用方法,=>会自动继承父类的方法
踩坑
import axios from ‘axios’
要写到
script
里面不然不会生效
同时由于每个组件都会用到axios发送请求,此时url和import包会重复多次
可以通过全局配置解决
//配置根路径
axios.defaults.baseURL = “http://api.com”
//将axios作为全局的自定义属性,每个组件内部都可以访问(相当于每个组件都导入了)
app.config.globalProperties.
h
t
t
p
=
a
x
i
o
s
(
v
u
e
3
的方法
)
V
u
e
.
p
r
o
t
o
t
y
p
e
.
http = axios (vue3的方法) Vue.prototype.
http=axios(vue3的方法)Vue.prototype.http = axios (vue2的方法)
具体而言,我们可以在main导入axios
axios.defaults.baseURL=“http://localhost:8080”
Vue.prototype.$ http = axios(相当于我们队VUE定义了一个属性vue $ http = axios
之后,只要是vue对象,我们就可以用
$http代替axios
所以hello.vue不用导入包,并且可以使用
this.$http代替axios
同时url也可以使用相对地址
created:function(){
this.$http.get("/user/findAll").then((response)=>{
// axios.get("http://localhost:8088/user/findAll").then((response)=>{
this.tableData = response.data
})
},