Safari阻止对Express API的CORS请求

Safari blocks CORS request to Express API

本文关键字:CORS 请求 API Express Safari      更新时间:2023-09-26

我有一个简单的节点/快递服务器,我将其用作AngularJS应用程序的API。它在localhost:8080 上运行

let express = require('express');
...
let cors    = require('cors');
...
let app     = express();
app.use(cors());
let port    = Number(process.env.PORT || 8080);
...
app.use('/api', require('./routes'));
app.use('*', (req, res) => res.sendStatus(httpStatus[404]).end());
app.listen(port, () => logger.info("✔ Listening on port " + port));

非常基本的东西。CCD_ 2应该允许来自任何具有方法CCD_ 3的来源的请求。

我在localhost:3000上的Angular应用程序只需向我的服务器发出GET请求,该服务器在Firefox和Chrome上运行良好,但仅在Safari上提供以下内容:

XMLHttpRequest cannot load http://localhost:8080/api/drawings/all. Origin http://localhost:3000 is not allowed by Access-Control-Allow-Origin.

我认为CORS完全由服务器处理,不应该存在跨浏览器的问题。我读到Safari在这方面更严格,但我想确保我的用户不必为了让网站正常工作而改变他们的偏好。即使在Safari的开发人员控制台中,检查"禁用跨来源限制"对我也没有任何帮助

我的服务器记录请求,并返回200状态。

清除Safari的缓存解决了这个问题。