【发布时间】:2016-04-06 02:34:05
【问题描述】:
我有一个简单的 node/express 服务器,用作我的 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 状态。
【问题讨论】:
-
清除缓存?根据github.com/photonstorm/phaser/issues/1355看来Safari可能有问题@
-
谢谢,这解决了 CORS 问题,但现在我有一个奇怪的 angularJS 错误,我在其他浏览器中没有遇到过。我将开始另一个问题。
标签: javascript angularjs express safari cors