相关文章推荐
刀枪不入的啄木鸟  ·  quill-腾讯云开发者社区-腾讯云·  1 年前    · 
爱玩的人字拖  ·  获取域名。url的地址_夏天想的博客-CSDN博客·  1 年前    · 
正直的小蝌蚪  ·  WPF直接用Window.Close直接关闭 ...·  1 年前    · 
英俊的针织衫  ·  Python中Json对象处理的jsonpa ...·  1 年前    · 
爽快的松鼠  ·  如何使用WinSCP连接Linux主机 - 简书·  2 年前    · 
Code  ›  javascript - Express JS:请求的资源上不存在“Access-Control-Allow-Origin”标头 -
access js js代码 access-control-a
https://segmentfault.com/q/1010000043008226
玩命的海豚
1 年前
segmentfault segmentfault
注册登录
问答 博客 标签 活动
发现
✓ 使用“Bing”搜本站 使用“Google”搜本站 使用“百度”搜本站 站内搜索
注册登录
  1. 首页
  2. 问答
  3. Stack Overflow 翻译
  4. 问答详情

Express JS:请求的资源上不存在“Access-Control-Allow-Origin”标头

社区维基
1
发布于
2022-12-08
新手上路,请多包涵

我有一个在服务器上运行的 API 和一个连接到它以检索数据的前端客户端。我对跨域问题进行了一些研究并使其有效。但是我不确定发生了什么变化。我现在在控制台中收到此错误:

XMLHttpRequest 无法加载 https://api.mydomain/api/status 。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问来源“ http://beta.mydomain.com ”。响应具有 HTTP 状态代码 502。

我有以下路由文件:

 var express = require('express');
var router = express.Router();
var Assessment = require('../app/models/assessment');
router.all('*', function (req, res, next) {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
    res.header('Access-Control-Allow-Headers', 'Content-Type');
    next();
router.post('/api/status', function (req, res, next) {
    getStatus.getStatus(req, res, Assessment);
module.exports = router;

以下 JavaScript 对该路由进行 Ajax 调用:

 var user = {
    'uid' : '12345'
$.ajax({
    data: user,
    method: 'POST',
    url: 'https://api.mydomain/api/status',
    crossDomain: true,
    done: function () {
    success: function (data) {
        console.log(JSON.stringify(data));
    error: function (xhr, status) {

我试过: 将请求域放在“Access-Control-Allow-Origin”标头中 使用 cors 模块进行快速 将我的 router.all 函数放在中间件中

请求域是 HTTP,api 域是在 HTTPS 上。但是,我在启用 HTTP 时让它工作。

有没有人知道为什么不发送“Access-Control-Allow-Origin”标头?

原文由 Tom 发布,翻译遵循 CC BY-SA 4.0 许可协议

Stack Overflow 翻译 javascript ajax node.js express cors
阅读 183
2 个回答
得票 最新
社区维基
1
发布于
2022-12-08
✓ 已被采纳

而不是将请求标头设置为您的快速路由,您可以尝试将其设置为像这样表达实例本身,

 var express = require('express');
var app = express();
var Assessment = require('../app/models/assessment');
app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
app.post('/api/status', function (req, res, next) {
    // your code goes here
module.exports = app;

希望这可以帮助!

原文由 David R 发布,翻译遵循 CC BY-SA 3.0 许可协议

社区维基
1
发布于
2022-12-08

您也可以使用 cors npm。

 **npm i cors**
const cors = require('cors')
var corsOptions = {
  origin: '*',
  optionsSuccessStatus: 200 // some legacy browsers (IE11, various SmartTVs) choke on 204
app.use(cors(corsOptions));
var routes = require('./api/routes/route'); //importing route
routes(app); //register the route
 
推荐文章
刀枪不入的啄木鸟  ·  quill-腾讯云开发者社区-腾讯云
1 年前
爱玩的人字拖  ·  获取域名。url的地址_夏天想的博客-CSDN博客
1 年前
正直的小蝌蚪  ·  WPF直接用Window.Close直接关闭窗口导致不能完全退出的问题 - PhiliAI - 博客园
1 年前
英俊的针织衫  ·  Python中Json对象处理的jsonpath-rw - 王一白 - 博客园
1 年前
爽快的松鼠  ·  如何使用WinSCP连接Linux主机 - 简书
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号