[英]CORS problem - Access to fetch at *** from origin *** has been blocked by CORS policy: No 'Access-Control-Allow-Origin' - PUT request to Firebase
[英]Access to fetch at *** from origin *** has been blocked by CORS policy: No 'Access-Control-Allow-Origin'
我有错误
从来源“882541222744288: //localhost:5000/admin/authenticate ”获取访问权限“ http://localhost:3000 ”已被 CORS 策略阻止:没有“Access-Control-Allow-Origin”header 出现在请求的资源。 如果不透明响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用 CORS 的资源。
我的 API 管理器
function login(username, password) {
const requestOptions = {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*' },
body: JSON.stringify({ username, password })};
return fetch(`http://localhost:5000/admin/authenticate`, requestOptions)
.then(handleResponse)
.then(user => {
// store user details and jwt token in local storage to keep user logged in between page refreshes
localStorage.setItem('user', JSON.stringify(user));
return user;
}
);
}
在后端 Asp.Net Core 2.2 (Startup.cs) 中,我写道:
services.AddCors(options =>
{
options.AddPolicy(
_corsName,
builder => { builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader().AllowCredentials(); });}
);
我尝试了 anerco 的答案,但它对我不起作用,我找到了这篇文章,它有一个非常相似的解决方案,但添加了.SetIsOriginAllowed(origin => true)
并删除了.AllowAnyOrigin()
。
因此,您应该将此代码添加到启动类中的 Configure 方法中:
app.UseCors(x => x
.AllowAnyMethod()
.AllowAnyHeader()
.SetIsOriginAllowed(origin => true) // allow any origin
.AllowCredentials()); // allow credentials
我建议阅读这篇文章以更好地理解所有这些,它非常简短且直截了当。
尝试这个:
on Startup.cs => Confirgure add:
app.UseCors(x => x.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader().AllowCredentials());
嗨,我是这个话题的新手,但是因为上周我遇到了这个错误,所以我尝试启用选项方法并且第一部分已解决。 这个错误是由于政策和安全问题而发生的,但现在我建议您获取状态代码,在我的情况下是 405 错误,这意味着现在我们必须更改请求中的标头以允许所有方法和来源(不可能)但是这对我没有帮助。
所以我发现我在我的应用程序中为我的 API 启用了 cookie 加密和会话(广泛的点),因此我禁用了它们并清除了浏览器 cookie。
所以尝试使用这些:
清除您的 cookie 并通过 Mod Header 扩展添加Access-Control-Allow-Origin': '*'
并再次尝试检查修复。 mod header -您的标题(客户端)
尝试使用中间界面来控制您的请求并引导他们进入特殊规则
app.use((req, res, next) => {
res.header('Access-Control-Allow-Origin', '*');
next();
});
根据本网站: https : //medium.com/@dtkatz/3-ways-to-fix-the-cors-error-and-how-access-control-allow-origin-works-d97d55946d9
如果您的服务器基于 express.js,请将这些行添加到服务器:
app.use(function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
})
FOR NODE EXPRESS GRAPHQL RESTAPI添加此标头中间件以避免 CORS 和任何 POST 或 OPTIONS 错误
app.use((req, res, next) => {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader(
"Access-Control-Allow-Methods",
"OPTIONS, GET, POST, PUT, PATCH, DELETE"
);
res.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization");
if (req.method === "OPTIONS") {
return res.sendStatus(200);
}
next();
});
In my case, I was trying to make a blob from an image stored on the API (the server) so the URL was pointing to that resource, in that API's program.cs
class, I already had a CORS policy, but I'd如您所说,得到确切的错误。 在我阅读有关此问题的Microsoft 文档(阅读您看到的第一段)之后,据说如果您想访问服务器上的资源,请使用 JavaScript (这是我试图做的),那么您必须调用app.UseCors();
在 app.UseStaticFiles app.UseStaticFiles();
之前这通常是相反的。
我的program.cs
:
const string corsPolicyName = "ApiCORS";
builder.Services.AddCors(options =>
{
options.AddPolicy(corsPolicyName, policy =>
{
policy.WithOrigins("https://localhost:7212");
});
});
...
var app = builder.Build();
app.UseSwagger();
app.UseSwaggerUI(settings =>
{
settings.DisplayRequestDuration();
settings.EnableTryItOutByDefault();
});
app.UseHttpsRedirection();
app.UseCors(corsPolicyName); // 👈 This should be above the UseStaticFiles();
app.UseStaticFiles(); // 👈 Below the UseCors();
app.UseAuthentication();
app.UseAuthorization();
app.UseApiCustomExceptionHandler();
app.MapControllers();
app.Run();
我最近回答了这个确切的问题,并获得了最佳答案。 这是问题链接,答案提供了详细说明以及如何在从服务或 URL 获取数据时使用该解决方案。
Chrome 中存在一个影响用户多年的错误,可以在此处找到。
您可以使用 Chrome 扩展 Allow-Control-Allow-Origin:* 在这里找到: https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi
: https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi
或者,您可以使用http://lacolhost.com/
指向 127.0.0.1 就像 localhost。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.