2014-08-28 3 views
4

Я следовал обычные шаги для включения CORS в web.api, но получить ответ 404 на запрос OPTIONS в Chrome и Firefox я получаю Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://api.mydomain.com/api/1/widgets. This can be fixed by moving the resource to the same domain or enabling CORS.404 для web.api Корс ВАРИАНТЫ

В моей WebApiConfig. CS у меня есть:

var enableCorsAttribute = new EnableCorsAttribute("*", "*", "*"); 
config.EnableCors(enableCorsAttribute); 

Я также попытался добавить EnableCors атрибутов конкретных контроллеров или действия, и все они имеют один и тот же результат.

Я также добавил следующее к моей web.config:

<modules runAllManagedModulesForAllRequests="true"> 
    <remove name="WebDAVModule" /> 
</modules> 
<handlers> 
    <remove name="WebDAV" /> 
... 

Вот мой JavaScript:

$.ajax({ 
    url: 'https://api.mydomain.com/api/1/widgets', 
    type: "GET", 
    headers: { 
     Accept: "text/html; charset=utf-8", 
     Authorization: 'Bearer ???????????????????????????????' 
      } 
     }); 

Но ответ 404 в Chrome и запрос Cross-Origin»Заблокированные "в Firefox.

Вот детали неисправного запроса из моей хромированной панели инструментов разработчика:

Remote Address:??.???.???.???:443 
Request URL:https://api.mydomain.com/api/1/widgets 
Request Method:OPTIONS 
Status Code:404 Not Found 

Запрос

OPTIONS /api/1/widgets HTTP/1.1 
Host: api.mydomain.com 
Connection: keep-alive 
Access-Control-Request-Method: GET 
Origin: http://myotherdomain.com 
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36 
Access-Control-Request-Headers: accept, authorization 
Accept: */* 
Referer: http://myotherdomain.com/ 
Accept-Encoding: gzip,deflate,sdch 
Accept-Language: en-GB,en;q=0.8,en-US;q=0.6 

Response

HTTP/1.1 404 Not Found 
Pragma: no-cache 
Content-Type: text/html; charset=utf-8 
Access-Control-Allow-Origin: http://myotherdomain.com 
Access-Control-Allow-Credentials: true 
X-AspNetMvc-Version: 5.0 
X-UA-Compatible: IE=edge,chrome=1 
X-Frame-Options: SAMEORIGIN 
Cache-conrol: no-store 
Date: Thu, 28 Aug 2014 16:00:28 GMT 
Content-Length: 341 

Что мне не хватает?

ответ

4

В случае, если у кого-либо другая проблема, эта проблема возникла из-за того, что мы использовали превосходный UrlScan Microsoft в IIS.

UrlScan имеет раздел AllowVerbs и раздел DenyVerbs. Убедитесь, что глагол параметров разрешен.

+2

Спасибо за подсказку! В моем случае я настроил свои маршруты, используя «MapHttpRoute», а глагол «OPTION» не был разрешен из-за «System.Web.Http.Routing.HttpMethodConstraint». – kbarton0

+0

+5 это заняло целый день, наконец, поймать !. – ibubi

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