CORS 策略已阻止从源 URL 访问 URL 的 XMLHttpRequest [重复]
Posted
技术标签:
【中文标题】CORS 策略已阻止从源 URL 访问 URL 的 XMLHttpRequest [重复]【英文标题】:Access to XMLHttpRequest at URL from origin URL has been blocked by CORS policy [duplicate] 【发布时间】:2020-01-05 12:02:10 【问题描述】:我正在尝试为我的前端处理 CORS。在我的本地主机(开发环境)上,给定的 cors 工作正常。但是当我将应用程序部署到heroku
时,它会给出给定的错误。
Access to XMLHttpRequest at 'myHerokuURL' from origin 'http://localhost:4200' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request.
这是我正在使用的 CORS。
app.use(function (req, res, next)
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', '*');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With, Authorization, x-auth-token, content-type');
res.setHeader('Access-Control-Allow-Credentials', false);
next();
);
【问题讨论】:
我的答案已更新。请检查。 【参考方案1】:您需要在 app.js 主文件中设置路由之前设置 cors。
npm i --save cors
此外,您可以将 cors 设置为根据您的环境模式(例如 development 或 production)自动更改
以下是我通常如何设置 cors 的示例:
var corsUrl;
if (process.env.NODE_ENV === 'development')
corsUrl = process.env.LOCAL_URL // http://localhost:8080
else if (process.env.NODE_ENV === 'production')
corsUrl = process.env.DEPLOY_URL // http://myapp.com
app.use(cors(
origin: corsUrl
))
注意:使用 https://myapp.com - 如果您在服务器上强制使用安全协议。
然后设置路线
app.use('/', indexRoutes)
admin.use('/', adminRoutes)
Cors 文档 - https://www.npmjs.com/package/cors 希望这会有所帮助。
【讨论】:
【参考方案2】:你需要像下面这样添加cors,
const cors = require('cors');
app.use(cors());
【讨论】:
以上是关于CORS 策略已阻止从源 URL 访问 URL 的 XMLHttpRequest [重复]的主要内容,如果未能解决你的问题,请参考以下文章
从本地 html 文件到服务器的 JSON 请求引发 CORS 错误:CORS 策略已阻止从源“null”访问 <URL> 处的 XMLHttpRequest
从源“http://localhost:8080”访问“API_URL”处的 XMLHttpRequest 已被 CORS 策略阻止:
CORS策略已阻止从源''访问'apiurl'处的XMLHttpRequest [重复]
CORS 策略已阻止从源对 X 的 XMLHttpRequest 的 CORS 访问