赞
踩
在后端的响应头设置Access-Control-Allow-Origin属性,允许前端的访问:
Access-Control-Allow-Origin: *
使用hbuildex X 编辑器运行到内置浏览器无需考虑跨域问题。
module.exports = {
devServer: {
disableHostCheck: true,
proxy: {
"/h5api": {
target: "https://tiyu.baidu.com",
changeOrigin: true,
secure: false,
pathRewrite: {
"^/h5api": "/"
}
}
}
}
}
配置完后,使用uni.request
发起网络请求无需https://tiyu.baidu.com
假设完整请求路径如下: https://tiyu.baidu.com/posts
此时发请求如下即可:
uni.request({
url:"/h5api/posts" //这里的/h5api相当于设置的target目标地址
}).then(res=>{
console.log(res);
})
由于配置了vue.config.js
,在微信小程序运行并不适用(微信小程序不存在跨域)。所以需要根据平台判断所属环境,来改变url
的路径即可
import { packApiUrl } from "./common.js" export function request(config = {}) { let { url, data = {}, method = "GET", header = {} } = config url = packApiUrl(url); // url 根据环境进行改变 return new Promise((resolve, reject) => { uni.request({ url, data, method, header, success: res => { if (res.data.status == 0) { resolve(res.data.data) } else { uni.showToast({ title: res.data.message, icon: "none" }) reject(res.data.data) } }, fail: err => { reject(err) } }) }) }
import {
API_HOST,
API_PROXY
} from "../config.js"
/**
* 组装接口url,如果是http 直接返回,否则,需要重新拼接url
*/
export const packApiUrl = (url = '') => {
if (url.slice(0, 4) === 'http') return url
else return `${API_HOST}${API_PROXY}${url}`
}
// 系统信息
export const SYSTEM_INFO = uni.getSystemInfoSync()
// 主机地址
export const HOST = 'https://tiyu.baidu.com';
// api服务器(uni-app 运行平台。如:app、mp-weixin、web )
export const API_HOST = SYSTEM_INFO.uniPlatform === 'web' ? '' : HOST;
// api服务代理路径
export const API_PROXY = SYSTEM_INFO.uniPlatform === 'web' ? '/h5api' : ''
api/apis.js
import {
request
} from "@/utils/request.js"
export function apiNbaData() {
return request({
url: "/api/match/playerranking/match/NBA/tabId/60"
})
}
import { defineConfig } from 'vite'; import uni from '@dcloudio/vite-plugin-uni'; export default defineConfig({ plugins: [uni()], server: { host: "localhost", // 指定服务器应该监听哪个IP地址,默认:localhost port: 8899, // 指定开发服务器端口,默认:5173 proxy: { // 为开发服务器配置自定义代理规则 // 带选项写法:http://localhost:5173/api/posts -> http://jsonplaceholder.typicode.com/posts "/h5api": { target: "https://tiyu.baidu.com", // 目标接口 changeOrigin: true, // 是否换源 rewrite: (path) => path.replace(/^\/h5api/, ""), } } } });
如果要适配小程序端,和上面的vue2
的配置一样
gitee
:参考代码:https://gitee.com/RanGuMo/uniapp.git
B
站up
咸虾米:参考视频:https://www.bilibili.com/video/BV1rt421V7Kc/?spm_id_from=333.999.0.0
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。