Код: Выделить всё
Access to fetch at 'https://orbis-api-web.azurewebsites.net/api/v1/UserAuth/RefreshToken'
from origin 'https://orbis-solidarity.com' has been blocked by CORS policy:
No 'Access-Control-Allow-Origin' header is present on the requested resource.
and
Failed to load resource: net::ERR_FAILED
TypeError: Failed to fetch
Код: Выделить всё
builder.Services.AddCors(options =>
{
options.AddPolicy("AllowSpecificOrigins", policy =>
{
policy.WithOrigins(
"https://orbis-api-web.azurewebsites.net",
"http://localhost:5173",
"https://orbis-solidarity.netlify.app",
"https://orbis-solidarity.com")
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials()
.AllowAnyHeader();
});
});
builder.Services.AddCors(options =>
{
options.AddPolicy("AllowLocalhost", policy =>
{
policy.WithOrigins("http://localhost:5173")
.AllowAnyHeader()
.AllowAnyMethod();
});
});
Код: Выделить всё
app.UseCors("AllowSpecificOrigins");
app.UseCors("AllowLocalhost");
Код: Выделить всё
[HttpPost("RefreshToken")]
public async Task RefreshToken([FromForm] string refreshToken)
{
var storedToken = await _userTokenRepository.FindByRefreshTokenAsync(refreshToken);
if (storedToken == null)
return Unauthorized("Invalid refresh token.");
var user = await _usersRepository.FindByIdAsync(storedToken.UserId);
if (user == null)
return Unauthorized("User not found.");
var newAccessToken = CreateToken(user);
var newRefreshToken = GenerateRefreshToken();
storedToken.Token = newAccessToken;
storedToken.RefreshToken = newRefreshToken;
storedToken.ExpiryDate = DateTime.UtcNow.AddMinutes(120);
storedToken.RefreshTokenExpiryDate = DateTime.UtcNow.AddDays(7);
await _userTokenRepository.UpdateAsync(storedToken);
return Ok(new
{
Token = newAccessToken,
RefreshToken = newRefreshToken
});
}
Код: Выделить всё
try {
const response = await fetch(`${this.ApiUrl}/UserAuth/RefreshToken`, {
method: 'POST',
body: new FormData().append('refreshToken', this.refreshToken),
});
} catch (error) {
console.error("Error refreshing token", error);
}
Бэкэнд: ASP.NET Core 8, размещенный в веб-приложении Azure (https://orbis-api-web.azurewebsites.net)
Внешний интерфейс: Vue.js, размещенный на Netlify (https://orbis-solidarity.com)
Конечная точка API: POST /api/v1/UserAuth/RefreshToken
введите здесь описание изображения
Подробнее здесь: https://stackoverflow.com/questions/798 ... -allow-ori
Мобильная версия