当前位置: 首页 > 知识库问答 >
问题:

Cors Vue 前端和快速后端

融渊
2023-03-14

我的前端:8080和后端:8081在同一台计算机上运行 http://192.168.178.20如果我导航到计算机上的 http://localhost:8080 一切正常(我可以成功地将请求发送到后端)。当我从智能手机导航到 http://192.168.178.20:8080 时,前端将按预期显示。但是我无法将请求从智能手机发送到后端,它认为这与 cors 配置有关,但我无法弄清楚如何正确更改它。

我是否必须在后端以某种方式将智能手机列入白名单?当我想在生产模式而不是开发模式下运行时,正确的配置看起来如何?

智能手机的私有IP地址(与计算机相同的网络)是192.168.178.21

我当前的后端配置如下所示:

import cors from 'cors';
import express from 'express';
import cookieParser from 'cookie-parser';

const SERVER_PORT = 8081;
const app = express();

app.use(cors({ 
  origin: ['http://localhost:8080'], 
  credentials: true 
}));

app.use(express.urlencoded({ 
  extended: true 
}));

app.use(express.json());
app.use(cookieParser());

app.use((req, res, next) => {
  res.header('Access-Control-Allow-Origin', 'http://localhost:8080');
  res.header('Access-Control-Allow-Credentials', true);
  res.header('Access-Control-Allow-Headers', 'x-access-token, Origin, Content-Type, Accept');
  res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
  next();
});

// my routes ...

app.listen(SERVER_PORT, () => {
  console.log(`Backend is listening on port ${SERVER_PORT}`);
});

先谢谢你。

共有1个答案

左丘宜年
2023-03-14

从智能手机上,原点是 http://192.168.178.20:8080,但在 CORS 配置中,您只允许 http://localhost:8080。尝试

app.use(cors({ 
  origin: ['http://localhost:8080', 'http://192.168.178.20:8080'],
  allowedHeaders: 'x-access-token',
  methods: 'GET, POST, PUT, DELETE, OPTIONS',
  credentials: true 
}));

并删除显式设置 Access-Control-Allow-* 标头的(冗余)中间件。(Origin,Content-Type,Accept不需要设置为允许的标头,它们始终是允许的,除非您的意思是,例如,内容类型:应用程序/json

客户端(您的智能手机)的 IP 地址无关紧要,重要的是前端服务器的地址和主机。

 类似资料:
  • 千金散尽还复来,那我把面经全发出来的话,她也会回来吗 8.9前端一面,30分钟后约二面,虽然不是offer,,过了面也不知道有谁可以分享 1. js和node事件循环 2. css权重 3. css可继承属性 4. 浏览器缓存、http缓存,缓存的应用场景,具体每一种缓存的使用,如何配置 5. 作用域链相关问题 6. 拍平数组加去重和排序,多种方式实现 面试时长一个小时,一共六个问题,出一个扩展讲

  • 后端 这是来自领域设置

  • 本人前端,公司给了我一个 node.js + TypeScript 写成的后端项目,给的时间大概是一周。 要求我在这段时间里: 自己要理解项目里的某两个重点接口的逻辑; 可以向他人讲解这两个重点接口; 能用 postman 调通这两个重点接口; 可以在以后对这两个重点接口进行扩展(深度掌握这两个接口)。 本人目前连这个项目都不知道怎么启动,也没有前辈可以指导我。数据库暂时还不知道要怎么放到本地,不

  • 问题内容: 我在堆栈或其他地方在后台处理NSTimer时遇到了很多问题。我尝试了所有实际上有意义的选项之一,以便在应用程序进入后台时停止计时器 和 起初我以为我的问题解决了,我只是保存了应用程序进入后台的时间,并计算了应用程序进入前景时的时间..但后来我注意到时间实际上延迟了3、4、5秒。 ..实际上不一样..我已将其与另一台设备上的秒表进行了比较。 在后台运行NSTimer真的有任何SOLID解

  • 问题内容: 我在终端中使用以下代码运行一些命令: 然后,我想知道运行此命令的结果是什么,例如,如果运行 我想阅读有关回购中更改的实际信息。有什么办法可以迅速做到这一点? 问题答案: 是用于将另一个程序作为子进程运行的类。您可以捕获程序的输出,错误输出,退出状态等等。 扩展我对xcode 6 swiftsystem()命令的回答,这是一个简单的实用函数,用于同步运行命令,并返回输出,错误输出和退出代

  • 快手 一面 9.14 promise.retry 颜色随机生成 时间的监听事件+定时任务+轮询 http状态码 http缓存 get post restful, 还有一些问题忘记了,形式就是一边刷题一遍穿插八股问 快手 二面 9.20 手写字符串的indexOf 超时中断的封装 promise.race ,AbortController promise的原理 手写MyAll,注意边界条件 手写对象

  • 面试的时候录下来了,应届大厂后端的都有录,可戳 1.学习成绩怎么样? 2.你学过哪些课程? 3.讲讲你是怎么学习的? 4.讲一下小米实习的具体的工作。 5.这个模块你拿到手的时候是一个什么状态?有什么资源?然后你还需要在什么基础上做什么开发? 6.项目的设计文档有经过什么样的评审吗?开发流程是怎么样的? 7.实习的几个月,你觉得收获什么东西? 8.领导同事对你有什么评价? 9.聊到了黑马点评。面试

  • js中如何实现快速排序?guolguul都不会放