允许本地主机上的 cors

Posted

技术标签:

【中文标题】允许本地主机上的 cors【英文标题】:Allow cors on localhost 【发布时间】:2020-04-30 16:30:23 【问题描述】:

我知道已经有人回答了,但我不明白如何解决我的问题。我正在使用 webpack 4 开发一个静态网站,但在尝试(本地和从我的在线服务器)加载图像时遇到问题。

如何解决使用 webpack 时出现的Access to XMLHttpRequest at 'XXX' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource 错误?我没有使用 express(仍在学习 webpack),我找到的所有答案对我来说都相当复杂,并且使用了自定义服务器,我没有..

有没有简单的方法绕过这个?

顺便说一句,我正在使用<img src="XXX" alt="" crossorigin="anonymous"> 处理我的图像。有时有效,有时无效..我发现的文章目前对我来说太技术性了..

我尝试将以下内容添加到我的webpack.config.dev.js 文件中,但它也不起作用:

devServer: 
    headers: 
      'Access-Control-Allow-Origin': '*',
      'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, PATCH, OPTIONS',
      'Access-Control-Allow-Headers': 'X-Requested-With, content-type, Authorization',
    ,
(...)

【问题讨论】:

我认为没有简单的方法可以解决这个问题。请参阅下面的答案如何在 Chrome 中禁用 CORS 和许多其他功能(您可以从不同的配置文件中执行此操作)。我发现从长远来看,使用 CORS 中间件从非常简单的 Experss 服务器上提供服务更简单。 【参考方案1】:

我认为您从在线服务器加载的图像会导致 CORS 警告,而您的 webpack conf 与它无关。

如果您使用的是 Chrome,则可以使用 this 之类的扩展程序绕过 CORS 或使用 Chrome 的 --disable-web-security 参数解释为 here

【讨论】:

扩展是完美的!我尝试了其他不起作用的方法,但是这个效果很好。谢谢! 我无法准确理解根本问题。您是否想尝试添加 'Access-Control-Allow-Origin': '*' 或 'Access-Control-Allow-Origin': ' localhost:3000',在你的在线 http 服务器响应?【参考方案2】:

您可以尝试使用 JSONP,但它有点像 hack,而且每个 API 都不允许使用它

【讨论】:

以上是关于允许本地主机上的 cors的主要内容,如果未能解决你的问题,请参考以下文章

cors 在本地主机上工作,但不在生产上

本地主机上带有 Angular 的 NodeJS + Express:被 CORS 预检阻止

从 angularjs 调用 REST 服务时本地主机上的 CORS 问题

本地主机上的 Access-Control-Allow-Origin(Laravel 和 Vue)CORS CORS 错误

如何在本地主机上启用 Spring 和 Angular 2 之间的 CORS

修复不同本地主机之间的“cors”请求。 405(不允许的方法)