0

угловой js, размещенный сервером ASP.NET. Выполнение вызова в веб-api. когда делает POST web api без параметра, то работает. Но когда передается параметр POST web api, тогда он дает ошибку ниже. Ошибка: XMLHttpRequest не может загрузить http://localhost:60117/api/Parts. Ответ на запрос перед полетом не проходит проверку контроля доступа. Нет заголовка «Access-Control-Allow-Origin» на запрошенном ресурсе. Происхождение http://localhost:64658 поэтому не допускается.

Примечание: уже включен cors nuget. [EnableCors("*", "*", "*")] ниже код в webapiconfig.cs

var cors = new System.Web.Http.Cors.EnableCorsAttribute("*", "*", "*"); 
     config.EnableCors(cors); 

Ниже мой запрос заголовок:

OPTIONS /api/Parts HTTP/1.1 
Host: localhost:60117 
Connection: keep-alive 
Access-Control-Request-Method: POST 
Origin: http://localhost:64658 
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36 
Access-Control-Request-Headers: content-type 
Accept: */* 
Referer: http://localhost:64658/app/views/Index.html 
Accept-Encoding: gzip, deflate, sdch, br 
Accept-Language: en-US,en;q=0.8 

когда делать ниже код в web.config то, что дает Mulitple принять ошибку глагол.

<httpProtocol> 
    <customHeaders> 
     <clear/> 
     <add name="Access-Control-Expose-Headers " value="WWW-Authenticate"/> 
     <add name="Access-Control-Allow-Origin" value="*"/> 
     <add name="Access-Control-Allow-Methods" value="GET, POST, OPTIONS, PUT, PATCH, DELETE"/> 
     <add name="Access-Control-Allow-Headers" value="accept, authorization, Content-Type"/> 
     <remove name="X-Powered-By"/> 
    </customHeaders> 
</httpProtocol> 

Обновлено:

Now getting below request response message: 

The requested resource does not support http method 'POST'.

AJAX вызов:

$http({ 
     method: "POST",      
     url: config.APIURL + 'Parts', 
     data: {'final':'final'}      
}); 

Пожалуйста, помогите мне здесь. застрял в этом вопросе.

ответ

0

Разница в порте рассматривается как запрос кросс-домена (xdomain), и поэтому некоторые браузеры отправляют запрос предварительной проверки OPTIONS.

Вам нужно будет настроить ваш сервер, чтобы принять этот запрос и вернуть 200 OK как на следующий адрес

http://enable-cors.org/server_aspnet.html

+0

Уже включили ядро ​​в webapiconfig, а также разрешения на уровне контроллера. хотя не повезло. – dsi

+0

вам не хватает заголовка 'Access-Control-Allow-Origin', возможно, добавьте ответ запроса, чтобы мы могли дать вам лучший ответ, я вижу, что код конфигурации закомментирован -' 'Надеюсь, в действительности вы удалили комментарии – maurycy

+0

установили web.config с system.webserver - '' now get error: Поле заголовка запроса Content-Type не разрешено Access- Control-Allow-Headers в предполетном ответе. – dsi

-1

Вам нужно добавить CorsMessageHandler класс на стороне сервера для разрешения запроса HTTP.

0

Если вы не преуспели в своих попытках, вы можете попробовать это. В вашем Globax.asax вашего WebAPI, имеют следующий метод

protected void Application_BeginRequest() 
     { 
      if (Context.Request.HttpMethod == "OPTIONS") 
      { 
       Context.Response.AddHeader("Access-Control-Allow-Origin", Context.Request.Headers["Origin"]); 
       Context.Response.AddHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
       Context.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");      
       Context.Response.End(); 
      } 
    } 

И В вашем WebAPI Config ли метод следующий вызов, чтобы включить CORS

config.EnableCors(); 

И в контроллере (ы) имеют атрибут похожие на

[EnableCors(origins: "*", headers: "*", methods: "*")] 

Надеюсь, это поможет. Вы также можете обратиться к этому сайту https://msdn.microsoft.com/en-us/magazine/dn532203.aspx за дополнительной информацией. Спасибо

 Смежные вопросы

  • Нет связанных вопросов^_^