从源***获取***的访问已被CORS政策阻止:否'Access-Control-Allow-Origin'

时间:2019-02-20 21:47:11

标签: javascript c# asp.net reactjs api

我有错误

  

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

5 个答案:

答案 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。

所以请尝试使用这些:

  1. 清除您的cookie并通过Mod Header扩展名添加Access-Control-Allow-Origin': '*',然后重试以检查修复。 mod header -your header (client)

  2. 尝试使用中间界面控制您的请求并将其引导为特殊规则

    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

答案 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。