Ошибка CORS при отправке POST API из Angular в .NetC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка CORS при отправке POST API из Angular в .Net

Сообщение Anonymous »

Я пытаюсь отправить один POST API из angular в мой код API dot net framework, но он выдает ошибку CORS. Я определил два сценария.
Случай 1
Когда я использую сервисы angular ниже, он выдает мне ошибку ниже (упоминается скриншот) . У меня есть один POST API, и я передаю данные и принимаю их в .net.
Angular Services

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

startStopService(data:any,options?:any):Observable{

const headers = new HttpHeaders({

'Content-Type':  'application/json'

});

console.log("data type" , typeof(JSON.stringify(data)))

return this.http.post(this.url+"action",data,{headers});

}

Выше — мои службы Angular, а ниже — снимки экрана с ошибкой, с которой я столкнулся при отправке данных POST API.
Изображение

[img]https: //i.sstatic.net/mujt0zDs.png[/img]

Случай 2
Когда я меняю содержимое заголовка в службах Angular Я не получаю ошибку CORS. Однако я получаю еще одну ошибку, которая означает, что «Имя машины недействительно». Несмотря на то, что имя машины передается из web.config из API и имеет точное значение.
Я предполагаю, что при передаче данных из angular в .net API они отправляются в строке JSON. Однако код API не может проанализировать его для правильного формата. Ниже представлены измененные сервисы Angular и скриншот.

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

startStopService(data:any,options?:any):Observable{

const headers = new HttpHeaders({

'Content-Type':  'application/x-www-form-urlencoded;charset=utf-8'

});

console.log("data type" , typeof(JSON.stringify(data)))

return this.http.post(this.url+"action",JSON.stringify(data),{headers});

}

Изображение

Для справки я прикрепил файл webapi.config.cs.

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

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Net;
using System.Threading.Tasks;
using System.Threading;
using System.Web.Http;
using System.Web.Http.Cors;
//using Microsoft.AspNetCore.Cors;

namespace WebApplication1
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services

config.EnableCors(new EnableCorsAttribute("http://localhost:4200", "*", "GET, POST, OPTIONS, PUT, DELETE"));
// Register Preflight Request Handler
config.MessageHandlers.Add(new PreflightRequestsHandler());

// Web API routes
config.MapHttpAttributeRoutes();

config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}

public class PreflightRequestsHandler : DelegatingHandler
{
protected override Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
if (request.Method == HttpMethod.Options)
{
var response = new HttpResponseMessage(HttpStatusCode.OK);
response.Headers.Add("Access-Control-Allow-Origin", "http://localhost:4200");
response.Headers.Add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
response.Headers.Add("Access-Control-Allow-Headers", "Content-Type, Accept, Authorization");
return Task.FromResult(response);
}

return base.SendAsync(request, cancellationToken);
}
}
}
}

Веб-API В конфигурации я пробовал использовать собственные заголовки и задавать значение Access-Control-Allow-Origin ="*", но это тоже не сработало.
Примечание. Мой API находится в .net 4.7.2, а Angular — в 17.
Microsoft.aspnet.webapi.core -->5.2.7
Microsoft.aspnet.webapi.cors -->5.2.7
В приведенном выше файле webapiconfig.cs я пробовал использовать только * вместо указанного, и это тоже не сработало.
Пожалуйста, дайте мне знать, если вам нужна дополнительная информация и помогите мне.

Подробнее здесь: https://stackoverflow.com/questions/790 ... lar-to-net
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Предупреждающее сообщение «Не удалось найти основную тему Angular Material» в Angular 3, Angular Material и Angular Mate
    Anonymous » » в форуме CSS
    0 Ответы
    279 Просмотры
    Последнее сообщение Anonymous
  • Ошибка CORS при отправке запроса на веб -API ASP.NET Web API
    Anonymous » » в форуме C#
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Приложение Angular, вызывающее PHP-скрипт, имеет сбой CORS только при POST
    Гость » » в форуме Php
    0 Ответы
    81 Просмотры
    Последнее сообщение Гость
  • Ошибка Bad Gateway (502) при вызове API Core Core .NET .NET из другого API Core .NET .NET .NET .NET
    Anonymous » » в форуме C#
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous
  • Ошибка Bad Gateway (502) при вызове API Core Core .NET .NET из другого API Core .NET .NET .NET .NET
    Anonymous » » в форуме C#
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous

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