Сообщение Ajax json контроллеру по доменам, « не разрешено «Access-Control-Allow-Headers

Я создаю простое действие MVC Controller, которое принимает некоторые данные json, а затем возвращаю true или false.

    [AllowCrossSiteJson]
    public JsonResult AddPerson(Person person)
    {
            //do stuff with person object
           return Json(true);
    }

Я вызываю его из javascript:

        function saveData(person) {
            var json = $.toJSON(person); //converts person object to json
            $.ajax({
                url: "http://somedomain.com/Ajax/AddPerson",
                type: 'POST',
                dataType: 'json',
                data: json,
                contentType: 'application/json; charset=utf-8',
                success: function (data) {
                    alert("ok");
                }
            });
        }

Все работает, пока я не n того же домена, но как только я звоню с другого домена, у меня возникают проблемы.

На контроллере есть фильтр действий «AllowCrossSiteJson», который устанавливает заголовок «Access-Control-Allow-Origin» на «*», позволяя любому источнику получить доступ к действию контроллера.

public class AllowCrossSiteJsonAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "*");
        base.OnActionExecuting(filterContext);
    }
}

Однако - затем я получаю эту ошибку в firebug при вызове через домены:

OPTIONS http: // somedomain.com / Ajax / AddPerson? packageId = 3 500 (внутренняя ошибка сервера) XMLHttpRequest не может загрузить http://somedomain.com/Ajax/AddPerson . Поле заголовка запроса Content-Type не разрешено Access-Control-Allow-Headers.

Что здесь не так?

Я просматривал возможные решения в течение нескольких часов, и, похоже, это как-то связано с jquery с использованием OPTIONS (а не POST, как я ожидал).

Если это действительно проблема, как я могу это исправить?

6
задан Kjensen 25 September 2011 в 18:34
поделиться