Как я могу отправить пользовательский заголовок запроса перекрестного происхождения в AngularJS + Web Api 2? - PullRequest
0 голосов
/ 05 января 2019

У меня есть проект Web Api 2:

[AuthorizeUser]
public class ValuesController : ApiController
{
    [Route("api/value/get")]
    [HttpPost]
    public IHttpActionResult Get()
    {
        return Ok("Hello world!");
    }
}

И конфигурация в WebApiConfig.cs

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // Web API configuration and services
        var cors = new EnableCorsAttribute("*", "*", "*");
        config.EnableCors(cors);

        // Web API routes
        config.MapHttpAttributeRoutes();

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

И запрос от клиента AngularJS:

$scope.getvalue = function () {
            var url = "http://localhost:59073/api/value/get";
            $http({
                method: "POST",
                url: url,
                header: {
                    'x-access-token': 'abc'
                }
            }).then(function onSuccess(res) {
                console.log(res);
            }).then(function onError(err) {
                console.log(res);
            });
        }

Но я не могу получить свой пользовательский заголовок "x-access-token" заголовка запроса POST на стороне сервера. И я также не вижу ни одного запроса OPTIONS на вкладке Network в Chrome.

1 Ответ

0 голосов
/ 06 августа 2019

Я знаю, что уже слишком поздно. Это поможет тому, кто сталкивается с той же проблемой. В вашем примере вы назначили объект для свойства заголовка. Я думаю, что это опечатка. Это должны быть заголовки вместо заголовка.

var req = {
   method: 'POST',
   url: 'http://example.com',
   headers: {
      'Content-Type':'x-access-token': 'abc'
   },
   data: { test: 'test' }
}

$http(req).then(function(){...}, function(){...});

Пожалуйста, обратитесь к официальным документам Angular1.x

https://docs.angularjs.org/api/ng/service/$http#setting-http-headers

...