前端跨域问题解决Access to XMLHttpRequest at xxx from has been blocked by CORS policy

在一些前后端不同源的项目中,前端向后端发起请求时,有时候无法正常向后端请求到服务,F12查看控制台会发现报错Access to XMLHttpRequest at 'xxx' from origin 'xxx' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.而无法正常提供服务。

这是由于所有使用JavaScript的浏览器都会支持同源策略。同源策略即指域名/协议/端口号相同。只要有一个不同,就会当作跨域请求。 此时还有浏览器同源策略的保护,是防止不同源(域、协议或端口)的网页之间进行恶意操作。所以综上,前端后端处在不同的域时就会报该错误。

解决方法为:

1.一种是让后端接口里添加如下两句代码:

java 复制代码
header('Access-Control-Allow-Origin:*');//允许所有来源访问

header('Access-Control-Allow-Method:POST,GET');//允许访问的方式

2.在前端框架index.js添加代理:

如果使用vue-cli脚手架创建的项目,找到config文件夹下的index.js文件。

找到dev下的proxyTable {}

举个例子,如果请求接口为http://www.baidu.com/user/info/list,请求头为http://www.baidu.com/,那么就添加

html 复制代码
"/api": {
	target: "http://www.baidu.com/",
	changeOrigin: true,
}

然后找到请求页面,在axios的请求接口里面只写/user/info/list就行了。

3.vue3在项目根目录下新建vue.config.js文件,在该文件内新增如下配置:

html 复制代码
module.exports = {
    devServer: {
        open: true,
        host: 'localhost',
        port: 8080,
        proxy: {
			//这个意思是每一个接口只要匹配到这种开头的接口,就走当前代理配置
            '/api': {    //1
				// 意思是目标地址,你请求谁报跨域了,你就把谁放这
                target: 'http://www.baidu.com/user/info/list',    //2
                changOrigin: true,
				//pathRewrite意思是重写地址,这个就是把代理后请求的地址中匹配替换成==> ""空,
				//当实际需要请求的路径里面没有"/api"时. 就需要 pathRewrite,用''^/api'':'', 把'/api'去掉, 这样既能有正确标识, 又能在请求到正确的路径
                pathRewrite: {    //3
                    '^/api': ''
                }
            }
        }
    }
}

然后找到请求页面,在axios的请求接口里面只写/api就行了。

相关推荐
子兮曰4 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰4 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万4 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝4 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋4 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁4 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
汉堡大王95274 天前
Jev:不是聊天机器人, 而是一个智能 if 语句
前端·人工智能·后端
梦想很大很大4 天前
从运行事实到回归证据:Workrun 的 Telemetry 与 Evaluation 实践
前端·人工智能·后端
计算机魔术师4 天前
Meta Muse agent 接入 Shopify 的 Shop Pay 实现代理式购物
前端
沙蒿同学4 天前
我用 Go 搭了一条 AI Agent 流水线:从 1 张商品图到一整套淘宝详情页
前端·javascript·后端