J'utilise Vue.js et j'essaie de faire une requête post et d'envoyer les données { name : 'TestName' } au contrôleur, mais quand j'arrive au contrôleur, au lieu que le nom soit égal à "TestName", il est null.
Voici ma demande Fetch : post
`sendName() {
let url = 'https://localhost:44362/Home/ReceiveName'
fetch(url, {
method: 'POST',
body: JSON.stringify({ name: 'TestName' })
}).then(function (response) {
response
}).catch(err => {
err
});
}`
Et voici ma méthode d'action ReceiveName dans le HomeController
`[HttpPost]
public string ReceiveName(string name)
{
*some code*
}`
Ici, le nom doit être "TestName", mais il est NULL
J'ai essayé de répondre à cette question Comment transmettre des données à un contrôleur en utilisant l'api Fetch dans asp.net core ? , pour définir [FromBody]
dans la méthode ReceiveName comme suit public string ReceiveName( [FromBody] string name)
mais cela n'a pas fonctionné pour moi. Ensuite, j'ai essayé d'ajouter des en-têtes au corps de la requête.
`headers: {
'Content-Type': 'application/json'
},`
Mais lorsque je fais cela, j'obtiens cette erreur dans le navigateur
Échec du chargement https://localhost:44362/Home/ReceiveName : La réponse pour le contrôle en amont n'a pas le statut HTTP ok.
Je pense que c'est à cause des règles CORS.
Je fais tourner mon backend sur https://localhost:44362 et mon frontend sur http://localhost:8080/ J'ai donc dû modifier mes règles CORS dans le fichier web.config comme suit
`<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>`
Ma question est la suivante - Comment puis-je recevoir les données de Fetch:post dans ma méthode d'action ?
Est-il nécessaire de créer une chaîne de requête ?
Mais je ne veux pas envoyer ma chaîne "TestName" en tant que FormData
Je sais que si je l'envoie de cette manière, je la recevrai dans ma méthode d'action, mais est-ce une bonne façon d'envoyer une chaîne de caractères ?