Что я пытаюсь сделать
У меня есть бэкэндс ASP.net Core Web API, размещенный на бесплатном плане Azure (добавьте заголовки безопасности по умолчанию. Net Core). < /P>
У меня также есть клиент -сайт, который я хочу сделать, потребляет этот API. Клиентское приложение не будет размещено в Azure, а будет размещено на страницах GitHub или в другой службе веб -хостинга, к которой у меня есть доступ. Из -за этого доменные имена не будут выстроены. Он отказывается работать. Я называю API через Ajax в jQuery. Сайт React работает, поэтому я знаю, что это не так. Вызов API JQUERY работает, как я подтвердил в попытке 1. Вот как я делаю звонки < /p>
var apiUrl = "http://andrewgodfroyportfolioapi.azurew ... entication";
//alert(username + "|" + password + "|" + apiUrl);
$.ajax({
url: apiUrl,
type: "POST",
data: {
username: username,
password: password
},
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
var authenticatedUser = JSON.parse(response);
//alert("Data Loaded: " + authenticatedUser);
if (onComplete != null) {
onComplete(authenticatedUser);
}
},
error: function (xhr, status, error) {
//alert(xhr.responseText);
if (onComplete != null) {
onComplete(xhr.responseText);
}
}
});
< /code>
Что я попробовал < /strong> < /p>
< Strong> Попытка 1 - «Правильный путь
https://learn.microsoft.com/en-us/aspne ... urity/cors
Я следовал этому руководству на веб -сайте Microsoft To T, попробовав все 3 варианта включения его во всем мире на startup.cs, установив его на каждом контроллере и пробуя его на каждом действии. < /p >
Следуя этому методу, поперечный домен работает, но только на одном действии на одном контроллере (публикуйте в AccountController). Для всего остального промежуточное программное обеспечение Microsoft.aspnetCore.cors отказывается устанавливать заголовки. .2
Вот как у меня есть настройка в startup.cs
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
// Add Cors
services.AddCors(o => o.AddPolicy("MyPolicy", builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
}));
// Add framework services.
services.AddMvc();
services.Configure(options =>
{
options.Filters.Add(new CorsAuthorizationFilterFactory("MyPolicy"));
});
...
...
...
}
// This method gets called by the runtime. Use this method to configure
//the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env,
ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
// Enable Cors
app.UseCors("MyPolicy");
//app.UseMvcWithDefaultRoute();
app.UseMvc();
...
...
...
}
< /code>
Как вы можете видеть, я делаю все, как сказано. Я добавляю CORS перед MVC оба раза, и когда это не сработало, я пытался поставить [eNablecors ("mypolicy")] на каждом контроллере как
[Route("api/[controller]")]
[EnableCors("MyPolicy")]
public class AdminController : Controller
Попытка 2 - Брусная заставляя его
https://andrewlock.net /Добавление деко-службы безопасности-управления в in-asp-net-core/
После нескольких часов попытки предыдущей попытки я подумал Заголовки вручную, заставляя их бежать по каждому ответу. Я сделал это следующим образом о том, как вручную добавить заголовки в каждый ответ. < /P>
Это заголовки, которые я добавил < /p>
.AddCustomHeader("Access-Control-Allow-Origin", "*")
.AddCustomHeader("Access-Control-Allow-Methods", "*")
.AddCustomHeader("Access-Control-Allow-Headers", "*")
.AddCustomHeader("Access-Control-Max-Age", "86400")
< /code>
Это другие заголовки, которые я попробовал, которые провалились < /p>
.AddCustomHeader("Access-Control-Allow-Methods", "GET, POST, PUT, PATCH, DELETE")
.AddCustomHeader("Access-Control-Allow-Headers", "content-type, accept, X-PINGOTHER")
.AddCustomHeader("Access-Control-Allow-Headers", "X-PINGOTHER, Host, User-Agent, Accept, Accept: application/json, application/json, Accept-Language, Accept-Encoding, Access-Control-Request-Method, Access-Control-Request-Headers, Origin, Connection, Content-Type, Content-Type: application/json, Authorization, Connection, Origin, Referer")
< /code>
С помощью этого метода заголовки поперечного сайта применяются должным образом, и они отображаются в моей консоли разработчика и в почтальоне. Проблема, однако, состоит в том, что, хотя он проходит проверку по контролю доступа, ввода-торигин , веб-брузир бросает фиксацию (я верю) в соответствии с головами доступа , заявляя 415 (неподдерживаемый тип носителя ) < /code> < /p>
Таким образом, метод грубого силы не работает и < /p>
Наконец < /strong> < /p>
Кто -нибудь получил это работать и мог протянуть руку или просто указывать мне в правильном направлении? < /p>
edit < /strong> < /p>
Таким образом, чтобы заставить вызовы API пройти, мне пришлось прекратить использование jQuery и переключиться на чистый JavaScript xmlhttprequest < /code> format.
Попытка 1
Я сумел получить microsoft.aspnetcore.cors Работать, следуя ответу MindingData, за исключением метода Configure , размещая app.usecors перед app.usemvc .
Кроме того, когда смешивается с помощью javascript api solution options.allowanyorigin () для поддержки подстановочных знаков также начала работать. > Итак, мне удалось получить попытку 2 (грубое заставив его) работать ... за единственным исключением, что подстановочное значение для контроля Access-Control-allowigin не работает, и поэтому у меня есть вручную установить домены, которые имеют к нему доступ. Это означает, что это начало < /p>
app.UseSecurityHeadersMiddleware(new SecurityHeadersBuilder()
.AddDefaultSecurePolicy()
.AddCustomHeader("Access-Control-Allow-Origin", "http://localhost:3000")
.AddCustomHeader("Access-Control-Allow-Methods", "OPTIONS, GET, POST, PUT, PATCH, DELETE")
.AddCustomHeader("Access-Control-Allow-Headers", "X-PINGOTHER, Content-Type, Authorization"));
Подробнее здесь: https://stackoverflow.com/questions/443 ... ore-webapi
Как включить Cors в ASP.net Core WebAPI ⇐ C#
Место общения программистов C#
1738386916
Anonymous
[b] Что я пытаюсь сделать [/b]
У меня есть бэкэндс ASP.net Core Web API, размещенный на бесплатном плане Azure (добавьте заголовки безопасности по умолчанию. Net Core). < /P>
У меня также есть клиент -сайт, который я хочу сделать, потребляет этот API. Клиентское приложение не будет размещено в Azure, а будет размещено на страницах GitHub или в другой службе веб -хостинга, к которой у меня есть доступ. Из -за этого доменные имена не будут выстроены. Он отказывается работать. Я называю API через Ajax в jQuery. Сайт React работает, поэтому я знаю, что это не так. Вызов API JQUERY работает, как я подтвердил в попытке 1. Вот как я делаю звонки < /p>
var apiUrl = "http://andrewgodfroyportfolioapi.azurewebsites.net/api/Authentication";
//alert(username + "|" + password + "|" + apiUrl);
$.ajax({
url: apiUrl,
type: "POST",
data: {
username: username,
password: password
},
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
var authenticatedUser = JSON.parse(response);
//alert("Data Loaded: " + authenticatedUser);
if (onComplete != null) {
onComplete(authenticatedUser);
}
},
error: function (xhr, status, error) {
//alert(xhr.responseText);
if (onComplete != null) {
onComplete(xhr.responseText);
}
}
});
< /code>
[b] Что я попробовал < /strong> < /p>
< Strong> Попытка 1 - «Правильный путь [/b]
https://learn.microsoft.com/en-us/aspnet/core/security/cors
Я следовал этому руководству на веб -сайте Microsoft To T, попробовав все 3 варианта включения его во всем мире на startup.cs, установив его на каждом контроллере и пробуя его на каждом действии. < /p >
Следуя этому методу, поперечный домен работает, но только на одном действии на одном контроллере (публикуйте в AccountController). Для всего остального промежуточное программное обеспечение Microsoft.aspnetCore.cors отказывается устанавливать заголовки. .2
Вот как у меня есть настройка в startup.cs
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
// Add Cors
services.AddCors(o => o.AddPolicy("MyPolicy", builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
}));
// Add framework services.
services.AddMvc();
services.Configure(options =>
{
options.Filters.Add(new CorsAuthorizationFilterFactory("MyPolicy"));
});
...
...
...
}
// This method gets called by the runtime. Use this method to configure
//the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env,
ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
// Enable Cors
app.UseCors("MyPolicy");
//app.UseMvcWithDefaultRoute();
app.UseMvc();
...
...
...
}
< /code>
Как вы можете видеть, я делаю все, как сказано. Я добавляю CORS перед MVC оба раза, и когда это не сработало, я пытался поставить [eNablecors ("mypolicy")] на каждом контроллере как
[Route("api/[controller]")]
[EnableCors("MyPolicy")]
public class AdminController : Controller
[b] Попытка 2 - Брусная заставляя его [/b]
https://andrewlock.net /Добавление деко-службы безопасности-управления в in-asp-net-core/
После нескольких часов попытки предыдущей попытки я подумал Заголовки вручную, заставляя их бежать по каждому ответу. Я сделал это следующим образом о том, как вручную добавить заголовки в каждый ответ. < /P>
Это заголовки, которые я добавил < /p>
.AddCustomHeader("Access-Control-Allow-Origin", "*")
.AddCustomHeader("Access-Control-Allow-Methods", "*")
.AddCustomHeader("Access-Control-Allow-Headers", "*")
.AddCustomHeader("Access-Control-Max-Age", "86400")
< /code>
Это другие заголовки, которые я попробовал, которые провалились < /p>
.AddCustomHeader("Access-Control-Allow-Methods", "GET, POST, PUT, PATCH, DELETE")
.AddCustomHeader("Access-Control-Allow-Headers", "content-type, accept, X-PINGOTHER")
.AddCustomHeader("Access-Control-Allow-Headers", "X-PINGOTHER, Host, User-Agent, Accept, Accept: application/json, application/json, Accept-Language, Accept-Encoding, Access-Control-Request-Method, Access-Control-Request-Headers, Origin, Connection, Content-Type, Content-Type: application/json, Authorization, Connection, Origin, Referer")
< /code>
С помощью этого метода заголовки поперечного сайта применяются должным образом, и они отображаются в моей консоли разработчика и в почтальоне. Проблема, однако, состоит в том, что, хотя он проходит проверку по контролю доступа, ввода-торигин , веб-брузир бросает фиксацию (я верю) в соответствии с головами доступа , заявляя 415 (неподдерживаемый тип носителя ) < /code> < /p>
Таким образом, метод грубого силы не работает и < /p>
[b] Наконец < /strong> < /p>
Кто -нибудь получил это работать и мог протянуть руку или просто указывать мне в правильном направлении? < /p>
edit < /strong> < /p>
Таким образом, чтобы заставить вызовы API пройти, мне пришлось прекратить использование jQuery и переключиться на чистый JavaScript xmlhttprequest < /code> format.
Попытка 1 [/b]
Я сумел получить microsoft.aspnetcore.cors Работать, следуя ответу MindingData, за исключением метода Configure , размещая app.usecors перед app.usemvc .
Кроме того, когда смешивается с помощью javascript api solution options.allowanyorigin () для поддержки подстановочных знаков также начала работать. > Итак, мне удалось получить попытку 2 (грубое заставив его) работать ... за единственным исключением, что подстановочное значение для контроля Access-Control-allowigin не работает, и поэтому у меня есть вручную установить домены, которые имеют к нему доступ. Это означает, что это начало < /p>
app.UseSecurityHeadersMiddleware(new SecurityHeadersBuilder()
.AddDefaultSecurePolicy()
.AddCustomHeader("Access-Control-Allow-Origin", "http://localhost:3000")
.AddCustomHeader("Access-Control-Allow-Methods", "OPTIONS, GET, POST, PUT, PATCH, DELETE")
.AddCustomHeader("Access-Control-Allow-Headers", "X-PINGOTHER, Content-Type, Authorization"));
Подробнее здесь: [url]https://stackoverflow.com/questions/44379560/how-to-enable-cors-in-asp-net-core-webapi[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия