2015-05-06 3 views
0

У меня есть один сценарий для отправки запроса на отправку ajax с http на https (нужно сделать это по некоторым сложным причинам), и мне нужно передать учетные данные для файлов cookie.EnableCors всегда возвращает шаблон для разрешенных источников в Web Api

Я использую Web Api на стороне сервера, с пакетом NuGet Microsoft.AspNet.WebApi.Cors, чтобы включить запрос Cors.

Код в стороне клиента:

$.ajax({ 
     url: 'https://www.sitename.com/api/xxx', 
     type: 'post', 
     data: { 
      '': 1 
     }, 
     headers: { 
      '__AntiXsrfTokenKey': 'whatevertokenhere' 
     }, 
     xhrFields: { 
      withCredentials: true 
     }, 
     dataType: 'json', 
     success: function (data) { 
     } 
    }); 

настройки Web Api:

config.EnableCors(); 

EnableCors атрибут для контроллера:

[EnableCors(origins: "http://www.sitename.com", headers: "*", methods: "*", SupportsCredentials = true)] 
public class XXXController : ApiController 

Предполетный заголовка запроса:

Access-Control-Request-Headers: accept, __AntiXsrfTokenKey, content-type 
Access-Control-Request-Method: POST 
Origin: http://www.sitename.com 

Заголовок ответа:

Access-Control-Allow-Credentials: true 
Access-Control-Allow-Headers: __AntiXsrfTokenKey,content-type 
Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS 
Access-Control-Allow-Origin: * 

Проблема явно, что Access-Control-Allow-Origin заголовок возвращает метасимволы *, вместо запроса происхождения, которые я указал в атрибуте контроллера 'http://www.sitename.com ». Так что я в конечном итоге ошибки:

A wildcard '*' cannot be used in the 'Access-Control-Allow-Origin' header when the credentials flag is true. Origin 'http://www.sitename.com' is therefore not allowed access. 

знает любой, почему такое поведение и как я могу установить домен Access-Control-Allow-Origin правильно в EnableCors атрибут?

ответ

0

Ok, наконец, нашел в web.config в system.webServer

<rewrite> 
    <outboundRules> 
    <rule name="Set Access-Control-Allow-Origin header"> 
     <match serverVariable="RESPONSE_Access-Control-Allow-Origin" pattern="(.*)" /> 
     <action type="Rewrite" value="*" /> 
    </rule> 
    </outboundRules> 
</rewrite> 
Смежные вопросы