Ошибка CORS при вызове RefreshToken из внешнего интерфейса (нет заголовка Access-Control-Allow-Origin)C#

Место общения программистов C#
Ответить
Anonymous
 Ошибка CORS при вызове RefreshToken из внешнего интерфейса (нет заголовка Access-Control-Allow-Origin)

Сообщение Anonymous »

Вот сообщение об ошибке из консоли браузера:

Код: Выделить всё

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();
});
});
И я включаю CORS в промежуточном программном обеспечении:

Код: Выделить всё

app.UseCors("AllowSpecificOrigins");
app.UseCors("AllowLocalhost");
Моя конечная точка в UserAuthController.cs:

Код: Выделить всё

[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
});
}
Код внешнего интерфейса (Vue.js)

Код: Выделить всё

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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»