我正在使用asp net core 2.1,我有一个具有以下方法的帐户控制器:
[HttpPost("login")]
public async Task<object> Login([FromBody] IdentityUserForLoginDto userForLogin)
{...}
[HttpPost("register")]
public async Task<object> Register([FromBody] IdentityClientForRegistrationDto userForRegistration)
{...}
当我在登录方法上获取数据时,一切正常,用户正常登录,但是当我尝试注册新用户时,我收到 CORS 问题:
CORS 策略已阻止从源"http://localhost:3001"获取"http://localhost:53531/api/account/register"的访问:请求的资源上不存在"访问控制-允许源"标头。如果不透明响应满足您的需求,请将请求的模式设置为"no-cors",以便在禁用 CORS 的情况下获取资源。
和:
发布 http://localhost:53531/api/account/register 网::ERR_FAILED
在我的后端,我尝试了启用 CORS 的所有可能组合,现在我有这个:
配置服务:
services.AddCors(options => options.AddPolicy("ApiCorsPolicy", builder =>
{
builder
.WithOrigins("http://localhost:3000", "http://localhost:3001")
.AllowAnyHeader().AllowCredentials()
.AllowAnyMethod();
}));
配置
app.UseCors("ApiCorsPolicy");
客户端数据获取:
fetch(`http://localhost:53531/api/account/register`, {
method: 'POST',
headers: { 'Content-Type': 'application/json'},
body: JSON.stringify(values)
})
.then(handleResponse)
.then(user => {
localStorage.setItem('currentUser', JSON.stringify(user));
currentUserSubject.next(user);
return user;
});
它们都放在Add/UseMvc之前。 我尝试过AllowAnyOrigin,[EnableCors]等。但总是一样。 我想指出的是,我也尝试从客户端禁用 cors,但在这种情况下,我得到文本/纯媒体类型,我明确想要应用程序/json。
此外,当我在邮递员中提出相同的请求时,一切正常..
有没有人知道如何解决这个问题?
我解决了这个问题。发送到服务器的数据存在问题。.它不是服务器期望的格式