解决asp.net mvc跨域问题
跨域浏览器会报错

如何解决?
1、前端
添加共用common.js
1 import axios from 'axios' 2 let querystring = require('querystring') 3 let token = ''; 4 axios.defaults.baseURL = 'http://10.182.29.94:8154/fpcfcs/api' 5 axios.defaults.timeout = 600000//超时时长,单位毫秒 6 axios.defaults.withCredentials = false//携带cookie 7 axios.defaults.headers.common['Token'] = token; 8 //axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8';//配置请求头 9 axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';//配置请求头 10 11 12 export function GetBaseURL() { 13 return axios.defaults.baseURL; 14 } 15 16 //添加一个请求拦截器 17 axios.interceptors.request.use(function (config) { 18 // token = window.sessionStorage.getItem('Token'); 19 token = getCookie("Token"); 20 config.headers.common['Token'] = token; 21 console.dir(config); 22 return config; 23 }, function (error) { 24 // Do something with request error 25 console.info("error: "); 26 console.info(error); 27 return Promise.reject(error); 28 }); 29 30 // 添加一个响应拦截器 31 /* axios.interceptors.response.use(function (response) { 32 console.log(response) 33 if (response.data && response.data.Result) { 34 if (response.data.Result=="1" ) { 35 //未登录 36 // response.data.Msg = "登录信息已失效,请重新登录"; 37 // alert(response.data.Msg); 38 //routerIndex.push('/login'); 跳转登录页 39 } 40 if (parseInt(response.data.Result) === 0) { 41 alert(response.data.Msg); 42 } 43 } 44 return response; 45 }, function (error) { 46 //做一些响应错误的事情 47 console.log(error); 48 alert("服务器连接失败"); 49 return Promise.reject(error); 50 }) */ 51 52 //get请求 53 export function get(url, data = {}) { 54 return axios.get(url, { params: data }) 55 } 56 //post请求 57 export function post(url, data = {}) { 58 return axios.post(url, querystring.stringify(data)) 59 } 60 //post请求 61 export function postWithJson(url, data = {}) { 62 return axios.post(url, data) 63 } 64 //post form参数请求 65 export function form(url, data = {}) { 66 return axios.post(url, 67 querystring.stringify(data), 68 { 69 headers: { 70 'Content-Type': 'application/x-www-form-urlencode' 71 } 72 }) 73 } 74 //下载文件 75 export function download(url, data = {}) { 76 axios 77 .post(url, data, { responseType: 'blob' }) 78 .then(function (response) { 79 //服务器端要在header设置Access-Control-Expose-Headers:Content-Disposition 80 //前端才能正常获取Content-Disposition内容 81 const disposition = response.headers['content-disposition'] 82 let fileName = disposition.substring(disposition.indexOf("filename*=UTF-8") + 17, disposition.length); 83 //iso8859-2的字符转换成中文 84 fileName = decodeURI(escape(fileName)); 85 var blob = new Blob([response.data]) 86 var downloadElement = document.createElement('a'); 87 var href = window.URL.createObjectURL(blob); //创建下载的链接 88 downloadElement.href = href; 89 downloadElement.download = fileName; //下载后文件名 90 document.body.appendChild(downloadElement); 91 downloadElement.click(); //点击下载 92 document.body.removeChild(downloadElement); //下载完成移除元素 93 window.URL.revokeObjectURL(href); //释放掉blob对象 94 }) 95 .catch(function (error) { 96 alert("下载发送错误,错误信息:" + error) 97 }); 98 } 99 100 //时间戳转日期格式,格式为2014-06-18 10:33:24 101 export function timestampToTime(timestamp) { 102 //var date = new Date(timestamp * 1000);//时间戳为10位需*1000,时间戳为13位的话不需乘1000 103 var date = new Date(timestamp); 104 var Y = date.getFullYear() + '-'; 105 var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'; 106 var D = date.getDate() + ' '; 107 var h = date.getHours() + ':'; 108 var m = date.getMinutes() + ':'; 109 var s = date.getSeconds(); 110 return Y + M + D + h + m + s; 111 } 112 function getCookie(name) { 113 /// <summary>获取Cookie</summary> 114 /// <param name="name" type="string">Cookie的名称</param> 115 /// <returns type="object" /> 116 117 var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)")); 118 if (arr != null) return unescape(arr[2]); return null; 119 }
前端使用
1 import { post, download } from "../Scripts/Common"; 2 3 post("/BasicInfo/GetLeiBie").then((res) => { 4 query.CATEGORYS = res.data.Data; 5 });
2.修改asp.net mvc项目中web.config文件
在system.webServer节添加
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Headers" value="Content-Type,Accept,X-Requested-With,Token"/>
<add name="Access-Control-Allow-Methods" value="GET,POST,OPTIONS"/>
<add name="Access-Control-Allow-Origin" value="*"/>
</customHeaders>
</httpProtocol>

浙公网安备 33010602011771号