当前位置: 首页 > news >正文

网站做好了怎么做后台管理百度权重3的网站值多少

网站做好了怎么做后台管理,百度权重3的网站值多少,火狐浏览器网站开发人员,换模板搭建网站怎么做从昨晚一直在试,明明之前用的封装的axios发送请求给其他的后端(springboot)是可以的,但昨天用了新项目的后端(node.js)就不行。 之前用了代理,所以浏览器发送的post请求不会被拦截,…

从昨晚一直在试,明明之前用的封装的axios发送请求给其他的后端(springboot)是可以的,但昨天用了新项目的后端(node.js)就不行。

之前用了代理,所以浏览器发送的post请求不会被拦截,但是昨天因为项目的接口没有统一前缀的原因(比如都用admin)开头,所以直接把baseUrl写成http://127.0.0.1:7123了,但是发送post请求出错,我还以为前端写错了,后面发现post请求的话总不行,报是跨域的问题,但是get的话就可以,查了一下,get的话请求参数会被放在query里面,post请求会跨域,所以node那边得写成  res.header("Access-Control-Allow-Headers", "X-Requested-With,Content-Type");原来的话是 res.header("Access-Control-Allow-Headers", "X-Requested-With")

解决跨域问题的写法:(记得加Content-Type)

res.header("Access-Control-Allow-Headers", "X-Requested-With,Content-Type");

总结,如果post用application/x-www-form-urlencoded,得格式化数据

   // 2. 使用 URLSearchParams 格式化数据const formData = new URLSearchParams();for (const key in data1) {formData.append(key, data1[key]);}// 3. 发送 POST 请求axios.post('http://127.0.0.1:7123/admin/login', formData, {headers: {'Content-Type': 'application/x-www-form-urlencoded',},})

如果post用json,则不用,因为axios会自动帮我们json化

    const data1 = {account: 'value1',password: 'value2'};// 2. 使用 URLSearchParams 格式化数据const formData = new URLSearchParams();for (const key in data1) {formData.append(key, data1[key]);}// 3. 发送 POST 请求axios.post('http://127.0.0.1:7123/admin/login', data1, {headers: {'Content-Type': 'application/json',},})

上面的例子是不封装的情况,如果是封装的话,如果传进来dataType:"json"格式,按照以下代码可以执行,因为这时候Content-Type为application/json,后端用req.body可以获取到

import axios from "axios"
import { ElLoading } from 'element-plus'; // 正确的拼写是 ElLoading,不是 Lloading
import router from '@/router'
import Message from '../utils/Message'
import { getCurrentInstance } from "vue";
const contentTypeForm='application/x-www-form-urlencoded;charset-UTF-8'
const contentTypeJson='application/json'
const contentTypeMulti ='multipart/form-data'
let loading=null;
import VueCookies from 'vue-cookies';
const instance=axios.create({baseURL:'http://127.0.0.1:7123', //请求后端接口的baseUrltimeout:10*1000, //设置请求的超时时间
})
//请求前拦截器
instance.interceptors.request.use((config)=>{const data= VueCookies.get("loginInfo");if(data){const token=data.token;if (token) {config.headers.token = token}}if(config.showLoading){loading=ElLoading.service({lock:true,text:'加载中……',background:'rgba(0,0,0,0.7)',})}return config;},(error)=>{if(config.showLoading&&loading){loading.close();}Message.error("请求发送失败");return Promise.reject("请求发送失败");}
);
//请求后拦截器
instance.interceptors.response.use((response)=>{const{showLoading,errorCallback,showError=true}=response.config;if(showLoading&&loading){loading.close();}//正常请求if (response.status==200){return response.data;}},(error)=>{const { showLoading, errorCallback, showError = true } = error.config;if (showLoading && loading) {loading.close();}(error.response);if(error.response){const responseData = error.response;if (responseData.status == 401) {setTimeout(() => {router.push("/login")}, 2000);return Promise.reject({ showError: true, msg: "登录超时" });}}if(error.config.showLoading&&loading){loading.close();}return Promise.reject({showError:true,msg:"网络异常"})}
);
const request = ({ url, method, params, dataType, showLoading = true, errorCallback, showError = true, data }) => {// 设置默认 Content-Typeconst contentType = method === 'upload' ? contentTypeMulti : (dataType === 'json' ? contentTypeJson : contentTypeForm);// 处理请求数据const requestData = method === 'upload' ? { data } : (method === 'get' || method === 'delete' ? { params } : { data: params });// 上传请求强制使用 POST 方法if (method === 'upload') {method = 'post';}return instance.request({method,url,...requestData,headers: {'Content-Type': contentType,'X-Requested-With': 'XMLHttpRequest',},showLoading,}).catch(error => {console.error(error);if (showError) {Message.error(error.msg || 'An error occurred');}if (errorCallback) {errorCallback(error);}return null;});
};export default request;

但是如果不传入dataType的话,默认为application/x-www-form-urlencoded的话,就要注意了,

 const requestData = method === 'upload' ? { data } : (method === 'get' || method === 'delete' ? { params } : { data: params });这行代码得改为 const requestData = method === 'upload' ? { data } : (method === 'get' || method === 'delete' ? { params } : { params });因为application/x-www-form-urlencoded是以 类似‘name=edward&age=25’  这样的形式放在参数中,后端得用req.query才能获取数据,req.body获取不到。

但是如果要在req.body获取得到的话,那么

import qs from 'qs';const request = axios.create({baseURL: process.env.BASE_URL,headers: {'Content-Type': 'application/x-www-form-urlencoded',}
})request.interceptors.request.use(config => {if (config.method === 'post') {config.data = qs.stringify(config.data)}return config;
})

记得要qs序列化。!!!!!!!!!!!!!!!!!!!!!!!!!

暂时先写这么多,后续有更清晰的理解再补充,哪里写错还请路过的大佬斧正。

贴一下原贴

post请求头设置成application/json时的跨域错误_指定contenttype为json后报跨域-CSDN博客

http://www.yayakq.cn/news/299143/

相关文章:

  • 网站开发用什么写模板商城建站
  • 台山网站建设公司青岛人社app
  • 后台网站如何建设家装公司简介
  • 互联网网站设计杭州搜索引擎推广
  • 站长seo综合查询工具怎么找平台推广自己的产品
  • 点菜网站模板深圳专业网站制作费用
  • 江门网站建设技术托管深圳做网站好的网站建设公司
  • go语言有啥好的网站开发框架引流推广的句子
  • 长清区网站建设宣传响应式网站的登录设置
  • 网站 色彩网站制作的必备技巧有哪些
  • 西双版纳网站建设公司wordpress 清空回收站
  • 盘锦化工网站建设网站备份和备案的区别
  • wordpress暂停网站梅州网站优化公司
  • linux 国外网站职高网页设计与制作
  • 跨境电商工具类产品的网站自适应网站模板源码
  • 做门户网站赚广告费网站建设方案书含合同
  • 租房子网站怎么做icp备案号查询平台官网
  • 湖北网站建设开发国外效果图网站
  • 作品展示网站模板ip形象设计
  • 导购网站模板深圳网站建设 培训
  • jsp网站开发面试题营销型网站源码
  • 怎么注销自己做的网站帝国网站管理 上一条 下一条 链接 信息id 信息发布时间
  • 新网站建设咨询经典重庆区县论坛
  • 腾讯网静态网站建设互联网公司运营
  • 网站制作建设是做什么盘锦网站建设优化
  • 杭州响应式网站案例前端做网站如何调接口
  • 盐城网站优化推广服务无锡网站关键词推广
  • wordpress二级域名做站群百度导航下载2022最新版官网
  • 从零开始学手机网站开发教程昆明做网站哪家公司好
  • s吗网站虚拟主机企业网站建设开发注意事项