В моем web.config я хотел бы указать более одного домена для access-control-allow-origin
директивы. Я не хочу использовать *
. Я пробовал этот синтаксис:
<add name="Access-Control-Allow-Origin" value="http://localhost:1506, http://localhost:1502" />
вот этот
<add name="Access-Control-Allow-Origin" value="http://localhost:1506 http://localhost:1502" />
вот этот
<add name="Access-Control-Allow-Origin" value="http://localhost:1506; http://localhost:1502" />
и этот
<add name="Access-Control-Allow-Origin" value="http://localhost:1506" />
<add name="Access-Control-Allow-Origin" value="http://localhost:1502" />
но ни один из них не работает. Какой правильный синтаксис?
asp.net
iis
cors
web-config
Сэм
источник
источник
*
значение, позволяющее любому источнику получить доступ к ресурсу. Однако исходный вопрос касался внесения в белый список набора доменов.Для IIS 7.5+ и Rewrite 2.0 вы можете использовать:
Объяснение
RESPONSE_Access_Control_Allow_Origin
части переменной сервера :в Rewrite вы можете использовать любую строку после,
RESPONSE_
и он создаст заголовок ответа, используя остальную часть слова в качестве имени заголовка (в данном случае Access-Control-Allow-Origin). Rewrite использует подчеркивание «_» вместо тире «-» (rewrite преобразует их в тире)Объяснение переменной сервера
HTTP_ORIGIN
:аналогично, в Rewrite вы можете получить любой заголовок запроса, используя
HTTP_
в качестве префикса. Те же правила с тире (используйте подчеркивание «_» вместо тире «-»).источник
(http(s)?:\/\/((.+\.)?(domain1|domain2)\.(com|org|net)))
. Таким образом, вы можете легко добавлять другие домены и поддерживать несколько доменов верхнего уровня (например, com, org, net и т. Д.).В Web.API этот атрибут можно добавить, используя,
Microsoft.AspNet.WebApi.Cors
как подробно описано на http://www.asp.net/web-api/overview/security/enpting-cross-origin-requests-in-web-api.В MVC вы можете создать атрибут фильтра, который сделает эту работу за вас:
Затем либо включите его для определенных действий / контроллеров:
Или добавьте его для всех контроллеров в Global.asax.cs
источник
Прочитав все ответы и попробовав их, ни один из них мне не помог. Во время поиска я обнаружил, что вы можете создать настраиваемый атрибут, который затем можно добавить в свой контроллер. Он перезаписывает EnableCors и добавляет в него домены из белого списка.
Это решение работает хорошо, потому что оно позволяет вам иметь домены из белого списка в webconfig (appsettings) вместо того, чтобы кодировать их в атрибуте EnableCors на вашем контроллере.
Я нашел это руководство в Интернете, и оно отлично сработало:
http://jnye.co/Posts/2032/dynamic-cors-origins-from-appsettings-using-web-api-2-2-cross-origin-support
Я думал, что брошу это здесь для всех, кто в этом нуждается.
источник
Мне удалось решить эту проблему в коде обработки запросов по совету «monsur».
источник
Для IIS 7.5+ вы можете использовать модуль IIS CORS: https://www.iis.net/downloads/microsoft/iis-cors-module
Ваш web.config должен выглядеть примерно так:
Вы можете найти ссылку на конфигурацию здесь: https://docs.microsoft.com/en-us/iis/extensions/cors-module/cors-module-configuration-reference
источник
Загляните в библиотеку Thinktecture IdentityModel - она полностью поддерживает CORS:
http://brockallen.com/2012/06/28/cors-support-in-webapi-mvc-and-iis-with-thinktecture-identitymodel/
И он может динамически выдавать нужный ACA-Origin.
источник
Вы можете добавить этот код в свой проект asp.net webapi
в файле Global.asax
источник
Вы можете использовать промежуточное ПО owin для определения политики cors, в которой вы можете определить несколько источников cors.
источник
Вам нужно всего лишь:
<add name="Access-Control-Allow-Origin" value="*" />
из вашего web.config.после этого добавьте это в
Application_BeginRequest
метод Global.asax:Надеюсь, это поможет. это работает для меня.
источник