我有错误
通过CORS策略阻止从原点“ http://localhost:5000/admin/authenticate”到“ http://localhost:3000”的访存:所请求的资源上没有“ Access-Control-Allow-Origin”标头。如果不透明的响应满足您的需求,请将请求的模式设置为“ no-cors”以在禁用CORS的情况下获取资源。
我的ApiManager
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(); });
});
答案 0 :(得分:1)
我尝试了anerco的答案,但对我不起作用,我发现了这个article,它的解决方案非常相似,但是添加了.SetIsOriginAllowed(origin => true)
而删除了.AllowAnyOrigin()
。
因此,您应该将此代码添加到启动类的Configure方法中:
app.UseCors(x => x
.AllowAnyMethod()
.AllowAnyHeader()
.SetIsOriginAllowed(origin => true) // allow any origin
.AllowCredentials()); // allow credentials
我建议您阅读这篇文章,以更好地理解所有这些内容,因为它非常简短而直接。
答案 1 :(得分:0)
尝试一下:
on Startup.cs => Confirgure add:
app.UseCors(x => x.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader().AllowCredentials());
答案 2 :(得分:0)
您好,我是这个主题的新手,但是由于上周遇到此错误,我尝试启用options方法,并且解决了第一部分。 发生此错误是由于政策和安全问题引起的,但是现在我请您获取状态代码,在我的情况下是405错误,这意味着现在我们必须更改请求中的标头以允许所有方法和源(无办法) 但这对我没有帮助。
所以我发现我已经在我的应用程序中为我的API启用了cookie加密和会话(关键点),因此我禁用了它们并清除了浏览器cookie。
所以请尝试使用这些:
清除您的cookie并通过Mod Header扩展名添加Access-Control-Allow-Origin': '*'
,然后重试以检查修复。
mod header -your header (client)
尝试使用中间界面控制您的请求并将其引导为特殊规则
app.use((req, res, next) => {
res.header('Access-Control-Allow-Origin', '*');
next();
});
答案 3 :(得分:0)
如果您的服务器基于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();
})
答案 4 :(得分:-6)
Chrome中的一个错误已影响用户多年了,可以here找到。
您可以使用Chrome扩展程序Allow-Control-Allow-Origin:*在此处找到:{% for key, value in myDict.items %}
或者,您可以使用https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi
指向127.0.0.1,例如localhost。