Safari阻止对Express API的CORS请求

时间:2016-01-01 16:44:16

标签: javascript angularjs express safari cors

我有一个简单的节点/快速服务器,我用它作为我的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));

非常基本的东西。 cors()应该允许使用方法GET,HEAD,PUT,PATCH,POST,DELETE来自任何来源的请求。

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状态。

1 个答案:

答案 0 :(得分:-1)

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