Ошибка перекрестного источника вызова API от клиента - PullRequest
0 голосов
/ 20 марта 2020

У меня установлен основной контроллер API Api. net, и я использовал включенные сердечники в классе запуска следующим образом:

В своей функции configureServices я сделал следующее:

service.AddCors(c =>
{
    c.AddPolicy("AllowOrigin", options => options.AllowAnyOrigin());
{

И в своей функции настройки я сделал: app.useCors();

В своем клиентском приложении я делаю следующее:

fetch(url, {
method: 'POST',
body: JSON.stringify(data),
headers: new Headers({
    'Content-Type': 'application/json'
}).then.....

Когда я звоню с клиента, я получить следующую ошибку:

Access to fetch at 'http://...' from origin 'http://...' has been blocked by CORS policy: response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves you needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

Мой пост API работает с почтальоном.

Как мне заставить это работать на моем клиенте?

1 Ответ

0 голосов
/ 20 марта 2020

Вы можете настроить CORS глобально в методе WebApiConfig Register для всех API следующим образом

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        var cors = new EnableCorsAttribute("www.example.com", "*", "*");
        config.EnableCors(cors);
        // ...
    }
}

Или на уровне контроллера API, украсить его атрибутом EnableCors следующим образом

[EnableCors(origins: "http://www.example.com", headers: "*", methods: "get,post")]
public class TestController : ApiController
{
    public HttpResponseMessage Get() { ... }
    public HttpResponseMessage Post() { ... }
    public HttpResponseMessage Put() { ... }    
}

Для подробнее, следуйте Включите запросы между источниками в ASP. NET Web API 2

...