从源 *** 获取 *** 的访问已被 CORS 策略阻止:没有“访问控制允许源”

Yur*_*zov 8 javascript c# asp.net api reactjs

我有错误

从源 ' http://localhost:3000 '获取在 ' http://localhost:5000/admin/authenticate '的访问已被 CORS 策略阻止:没有 '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;
        }
    );
}
Run Code Online (Sandbox Code Playgroud)

在后端 Asp.Net Core 2.2 (Startup.cs) 中,我写道:

services.AddCors(options =>
{
    options.AddPolicy(
        _corsName,
        builder => { builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader().AllowCredentials(); });}
);
Run Code Online (Sandbox Code Playgroud)

小智 9

我尝试了 anerco 的答案,但它对我不起作用,我发现这篇文章,它有一个非常相似的解决方案,但.SetIsOriginAllowed(origin => true)添加和.AllowAnyOrigin()删除了。

因此,您应该将此代码添加到启动类中的配置方法中:

app.UseCors(x => x
                    .AllowAnyMethod()
                    .AllowAnyHeader()
                    .SetIsOriginAllowed(origin => true) // allow any origin
                    .AllowCredentials()); // allow credentials
Run Code Online (Sandbox Code Playgroud)

我建议阅读这篇文章以更好地理解所有这些,它非常简短,开门见山。


Jos*_*oni -8

Chrome 中存在一个已影响用户多年的错误,可以在此处找到。

您可以使用 Chrome 扩展程序 Allow-Control-Allow-Origin: * 位于此处:https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi

或者,您可以使用http://lacolhost.com/它指向 127.0.0.1,如 localhost。

  • 这是完全错误和误导的。您可以在 localhost 中使用 CORS 就好了 (3认同)
  • 奇怪的是,考虑到过去 18 个月我一直在 localhost 上的 Chrome 中使用 CORS。 (2认同)