axios的基体请求使用
- get 请求使用方法
var url = "请求链接";
var param= {"参数":"参数的值"};
param = {params:param};
axios.get(
url,param
).then(function (data) {
callBackFunc(data.data);
}).catch(function (e) {
console.log("url:"+url +",请求失败,网络错误");
});
2.post请求使用方法
-
var url = "请求链接";
-
var formDate = {"参数":"参数的值"};
-
axios.post(
-
url,
-
formDate
-
).then(function (data) {
-
alert("请求成功");
-
}).catch(function (e) {
-
console.log("url:"+url +",请求失败,网络错误");
使用方法就这么简单,
################## 解决跨域问题 ##############################################
先看看报错信息,跨域问题一直让人很头疼

解决方案是在后端服务器响应时添加响应头(这里用 java 示例)在过滤器中为每个请求添加响应头Access-Control-Allow- Origin 以解决跨域问题
-
package com.icode.common.web.config.filter;
-
import com.icode.common.command.UserSessionCommand;
-
import com.icode.common.constant.CommonContant;
-
import com.icode.common.web.service.WebCacheService;
-
import com.xd.core.common.error.ErrorMsg; import com.xd.core.common.utils.JsonParser;
-
import com.xd.core.common.utils.StringUtils;
-
import com.xd.core.common.utils.WebUtils;
-
import org.springframework.context.ApplicationContext;
-
import org.springframework.web.context.support.WebApplicationContextUtils;
-
import javax.servlet.*;
-
import javax.servlet.http.HttpServletRequest;
-
import javax.servlet.http.HttpServletResponse;
-
import java.io.IOException;
-
/**
-
* <过滤器>
-
**/
-
-
public class WebFilter implements Filter {
-
-
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
-
HttpServletRequest request = (HttpServletRequest) servletRequest;
-
HttpServletResponse response = (HttpServletResponse) servletResponse;
-
//为所有请求添加响应头,以解决ajax跨域问题
-
response.setHeader("Access-Control-Allow-Origin", "*");
-
//设置编码16:12:3416:12:35
-
response.setCharacterEncoding("UTF-8");
-
request.setCharacterEncoding("UTF-8");
-
filterChain.doFilter(request, response);
-
}
-
-
//为所有请求添加响应头,以解决ajax跨域问题
-
response.setHeader("Access-Control-Allow-Origin", "*");
然后前端 axios 的 post 请求封装成 FormData 对象 即可解决跨域问题
-
//使用formdata方式传参
-
var formDate = new FormData();
-
formDate.append("loginName","123");
-
formDate.append("password","123");
-
axios.post(
-
url,
-
formDate,
-
config
-
).then(function (data) {
-
callBackFunc(data.data);
-
}).catch(function (e) {
-
console.log("url:"+url +",请求失败,网络错误");
-
});axios的请求拦截器和响应拦截器的使用:
xios的拦截器是一个非常优秀的设计,借助它我们可以实现很多效果,节省重复的代码。
axios是一个设计很巧妙的库,而且他的代码很短,是学习优秀开源库很好的例子,推荐有时间都能去看看它的源码。
axios结合django的使用:
开发环境:vue+django+axios
问题:
在网上看了好多个方法,有修改vue前端的,有修改服务端的,在前端vue的config文件夹下的index.js中配制proxyTable的方法试过之后没有解决。最后还是修改的服务端的代码。
方法:使用django-cors-headers
(1)打开项目目录,使用pip安装
pip install django-cors-headers
修改项目的settings.py文件,添加到app中
INSTALLED_APPS = (
...
'corsheaders',
...
还是在settings.py中,添加中间件
注意添加的顺序,要在SessionMiddleware和CommonMiddleware之间
MIDDLEWARE = [ # Or MIDDLEWARE_CLASSES on Django < 1.10 ... 'django.contrib.sessions.middleware.SessionMiddleware',
'corsheaders.middleware.CorsMiddleware', 'django.middleware.common.CommonMiddleware', ... ]
在settings.py下面添加
CORS_ALLOW_CREDENTIALS = True CORS_ORIGIN_ALLOW_ALL = True CORS_ALLOW_METHODS = ( 'DELETE', 'GET', 'OPTIONS', 'PATCH', 'POST', 'PUT', 'VIEW', ) CORS_ALLOW_HEADERS = ( 'XMLHttpRequest', 'X_FILENAME', 'accept-encoding', 'authorization', 'content-type', 'dnt', 'origin', 'user-agent', 'x-csrftoken', 'x-requested-with', 'Pragma', )
如果报错404就是路由问题

浙公网安备 33010602011771号