Настройка Access-Control-Allow-Origin в ASP.Net MVC - самый простой способ - PullRequest
198 голосов
/ 09 июня 2011

У меня есть простой метод действия, который возвращает JSON.Он работает на ajax.example.com.Мне нужно получить доступ к этому с другого сайта someothersite.com.

Если я попытаюсь позвонить, я получу ожидаемое ...:

Origin http://someothersite.com is not allowed by Access-Control-Allow-Origin.

Я знаю два способа обойтиэто: JSONP и создание пользовательского HttpHandler для установки заголовка.

Нет ли более простого способа?

Разве это невозможно для простогодействие, чтобы определить список разрешенных источников - или просто разрешить всем?Может быть, фильтр действий?

Оптимальным будет ...:

return json(mydata, JsonBehaviour.IDontCareWhoAccessesMe);

Ответы [ 12 ]

0 голосов
/ 29 января 2019

Если вы используете IIS, я бы посоветовал попробовать IIS CORS module .
Он прост в настройке и работает для всех типов контроллеров.

Вот пример конфигурации:

    <system.webServer>
        <cors enabled="true" failUnlistedOrigins="true">
            <add origin="*" />
            <add origin="https://*.microsoft.com"
                 allowCredentials="true"
                 maxAge="120"> 
                <allowHeaders allowAllRequestedHeaders="true">
                    <add header="header1" />
                    <add header="header2" />
                </allowHeaders>
                <allowMethods>
                     <add method="DELETE" />
                </allowMethods>
                <exposeHeaders>
                    <add header="header1" />
                    <add header="header2" />
                </exposeHeaders>
            </add>
            <add origin="http://*" allowed="false" />
        </cors>
    </system.webServer>
0 голосов
/ 27 марта 2018

В Web.config введите следующее

<system.webServer>
<httpProtocol>
  <customHeaders>
    <clear />     
    <add name="Access-Control-Allow-Credentials" value="true" />
    <add name="Access-Control-Allow-Origin" value="http://localhost:123456(etc)" />
  </customHeaders>
</httpProtocol>
...