VueJs können keine Daten aus einer C#-Web-API-Sitzung abrufenC#

Ein Treffpunkt für C#-Programmierer
Guest
 VueJs können keine Daten aus einer C#-Web-API-Sitzung abrufen

Post by Guest »

Ich habe ein Problem beim Abrufen von Daten aus der C#-Web-API-Sitzung. Das Problem tritt nur auf, wenn ich versuche, von https://localhost:8080 (vue js-Port) auf meine API (https://localhost:7251) zuzugreifen.
Wenn ich Insomnia/Swagger verwende, sieht es völlig in Ordnung aus.
Hier ist der Code für den Vue.js-Abruf:

import axios from "axios";

export default {
// eslint-disable-next-line vue/multi-word-component-names
name: "Header",
data() {
return {
user: {}, // Domyślnie pusty obiekt dla użytkownika
};
},
methods: {
async getUser() {
try {
const result = await axios.get(
"https://localhost:7251/api/Auths/GetUser",
{
headers: {
"Content-Type": "application/json",
},
withCredentials: true, // Włącza obsługę ciasteczek dla sesji
mode: "cors", // Wyraźnie określa, że żądanie jest między domenami
}
);
console.log("RESULT: ", result);
if (result.status === 200) {
console.warn("USER DATA: ", result.data);
this.user = result.data; // Zakładamy, że result.data ma właściwość 'name'
} else {
console.error("Failed to fetch user data");
}
} catch (error) {
console.error(
"Error fetching user data:",
error.response?.data || error.message
);
}
},
},
mounted() {
this.getUser(); // Wywołanie funkcji przy montowaniu komponentu
},
};


Und das ist vue.config.js:
const { defineConfig } = require("@vue/cli-service");

module.exports = defineConfig({
transpileDependencies: true,
devServer: {
https: true, // Włącza HTTPS
allowedHosts: "all",
},
});

Dies ist die Projekteinrichtung für die Program.cs-Datei:
Cors-Richtlinie:
builder.Services.AddCors(options =>
{
options.AddPolicy("AllowAllOrigins", policy =>
{
policy.WithOrigins("https://localhost:8080")// Domena frontendu
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials(); // Umożliwia przesyłanie ciasteczek/sesji
});
});
app.UseCors("AllowAllOrigins");

Und Sitzung:
builder.Services.AddSingleton();
builder.Services.AddDistributedMemoryCache();
builder.Services.AddSession(options =>
{
options.Cookie.Name = "Session.Works";
options.IdleTimeout = TimeSpan.FromMinutes(30); // Czas wygasniecia sesji
options.Cookie.IsEssential = true; // Sesje beda dzialaly nawet bez zgody na cookies
options.Cookie.SameSite = SameSiteMode.None; // Pozwala na prawidlowe przekazywanie ciasteczka
//options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
options.Cookie.SecurePolicy = CookieSecurePolicy.SameAsRequest;

});

Alles, was ich beim Abrufen aus der Sitzung erhalte, ist „Sitzung konnte Benutzer nicht abrufen“ und 500 Interner Serverfehler.
Das passiert NUR auf der Clientseite. Anmelde-/Registrierungsaufrufe funktionieren einwandfrei.
Was soll ich tun?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post