即使设置了CORS标头,也没有设置。为什么?

时间:2019-10-17 22:15:41

标签: node.js express http cors http-headers

尝试下载图像时出现此CORS错误(但任何URL都出现相同的错误):

Access to XMLHttpRequest at 'https://s.iha.com/00144228146/Paimpol-Lighthouse-of-the-peacock-on-the-island-of-brehat-near-paimpol.jpeg' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

我正在运行带有Parcel Bundler的ExpressJS服务器:

const app = express();


app.use(cors());


app.use(bodyParser.urlencoded({
    extended: false
}));
app.use(bodyParser.json());
app.use(morgan('dev'));

const http = require('http').Server(app);

http.listen(port);

app.use(bundler.middleware());

正如您在上面看到的,我尝试过Express的cors()插件,并且尝试过自己手动设置标头,如下所示:

    app.use((req, res, next) => {
            res.setHeader('Access-Control-Allow-Origin', '*');
            res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
            res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
            res.setHeader('Access-Control-Allow-Credentials', true);

            next();

但是,无论我尝试了什么。我仍然遇到同样的No 'Access-Control-Allow-Origin' header is present on the requested resource错误。

在Chrome浏览器中,我可以看到以下标题设置:

enter image description here

有些东西不匹配,我还没弄清楚是什么。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

您得到的错误不是来自服务器:http://localhost:3000,而是来自https://s.iha.com/

不发出AJAX请求,只需使用<img>标签投放图片即可。

您可以从服务器上下载以避免CORS问题,也可以仅点击启用了CORS的服务器。