Блокировка перекрестного запроса между локальными проектами - PullRequest
0 голосов
/ 29 сентября 2018

Я написал метод для загрузки файлов на стороне клиента веб-формы asp.net, который использует плагин resumablejs.С другой стороны, я написал метод на контроллере проекта MVC и активировал источник Cors в webconfig этого проекта, например:

<httpProtocol>
 <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*"/>
    <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS"/>
    <add name="Access-Control-Allow-Headers" value="*"/>
  </customHeaders>
</httpProtocol>

Я тоже использовал likem:

[EnableCors(origins: "http://localhost:10811", headers: "*", methods: "*")]
public class UploadController : ApiController
{}

но когда я вызываю метод загрузки в Firefox, у меня появляется эта ошибка в консоли:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:5023/Home/UploadFiles. (Reason: CORS request did not succeed)

и эта ошибка в Chrome:

Response for preflight does not have HTTP ok status.

Есть вопрос: я проверил клиентабоковой метод с клиентом проекта MVC это работает.В чем проблема, может кто-нибудь мне помочь?

1 Ответ

0 голосов
/ 29 сентября 2018

Вам потребуется атрибут фильтра действий, подобный следующему:

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

Затем примените этот атрибут к своему методу действия или классу контроллера в зависимости от ваших требований.Я предлагаю применять его на уровне действия, так как он не сделает все методы действия доступными:

[AllowCORS]
public ActionResult UploadFile()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...