javascript CORS策略已阻止在***从原始**提取数据的访问权限:无“访问控制允许来源”

iqjalb3h  于 2023-01-04  发布在  Java
关注(0)|答案(7)|浏览(141)

我有错误
CORS策略已阻止从源"http://localhost:3000"在"http://localhost:5000/admin/authenticate"提取数据的访问权限:请求的资源上不存在"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核心2.2(Startup.cs)中,我写道:

services.AddCors(options =>
{
    options.AddPolicy(
        _corsName,
        builder => { builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader().AllowCredentials(); });}
);
iezvtpos

iezvtpos1#

我尝试anerco的答案,但它不为我工作,我发现这个article,它有一个非常相似的解决方案,但与.SetIsOriginAllowed(origin => true)添加和.AllowAnyOrigin()删除.
因此,您应该将以下代码添加到startup类的Configure方法中:

app.UseCors(x => x
                    .AllowAnyMethod()
                    .AllowAnyHeader()
                    .SetIsOriginAllowed(origin => true) // allow any origin
                    .AllowCredentials()); // allow credentials

我建议阅读这篇文章,以获得更好的理解这一切,它非常简短,直奔主题。

ki1q1bka

ki1q1bka2#

嗨,我是这个主题的新手,但是因为我上周遇到了这个错误,所以我尝试启用选项方法,第一部分解决了。这个错误是由于策略和安全问题而发生的,但是现在我建议你获取状态代码,在我的情况下,它是405错误,这意味着现在我们必须更改请求中的标题,以允许所有方法和来源(没有办法),但它没有帮助我解决问题。
所以我发现我已经在我的API应用程序中启用了cookie加密和会话(广泛的点),因此我禁用了它们,并清除了浏览器cookie以及。
因此,请尝试使用以下方法:
1.清除您的Cookie并通过Mod Header扩展名添加Access-Control-Allow-Origin': '*',然后重试检查修复。mod header-your header (client)
1.尝试使用一个中间接口来控制您的请求,并引导他们进入特殊规则

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

knpiaxh1

knpiaxh13#

试试这个:

on Startup.cs => Confirgure add:
     app.UseCors(x => x.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader().AllowCredentials());
0mkxixxg

0mkxixxg4#

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();
    });
holgip5t

holgip5t5#

如果您的服务器基于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();
})
bhmjp9jg

bhmjp9jg6#

在我的例子中,我试图从存储在API上的图像中创建一个blob(服务器),因此URL指向该资源,在该API的program.cs类中,我已经有了一个CORS策略,但我得到了您所说的确切错误。(阅读您看到的第一段)关于这个问题,据说如果您想访问服务器上的资源,请使用JavaScript(这是我试图做的),那么您必须将app.UseCors();之前称为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();
pwuypxnk

pwuypxnk7#

Chrome中有一个错误已经影响用户多年了,它可以被发现here
您可以使用Chrome浏览器扩展名Allow-Control-Allow-Origin:* 在此找到:第一个月
或者,您可以使用http://lacolhost.com/,它127.0.0.1像localhost一样指向www.example.com。

相关问题