Как сделать, чтобы браузер, открытый при помощи Selenium работал как с мобильного телефона?
У одного веб приложения есть проверка на текущее устройство.
Server=localhost
Reference containers by name, not IP, whenever possible. Otherwise you’ll need to constantly update the IP address you use.
Port=6002
"Postgres": "Server=localhost; Port=6002; Database=post; User ID=postgres; Password=passwd; Pooling=true"
"Postgres": "Server=postgres_db; Port=5432; Database=post; User ID=postgres; Password=passwd; Pooling=true"
version: '3.8'
networks:
postgres-network:
driver: bridge
services:
gchain.posts.api:
image: gchain.posts.api
build:
context: .
dockerfile: GChain.Posts.Api/Dockerfile
ports:
- "80:8080"
networks:
- postgres-network
depends_on:
- postgres_db
postgres_db:
container_name: postgres_post
image: postgres:latest
environment:
POSTGRES_USER: ${POSTGRES_USER:-postgres}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-passwd}
POSTGRES_DB: post
volumes:
- postgres-data:/var/lib/postgresql/data
ports:
- "6002:5432"
networks:
- postgres-network
restart: unless-stopped
volumes:
postgres-data:
@Html.BeginForm()
{
<label>Страна</label>
@Html.EditorForModel(x => x.Country)
<label>Город</label>
@Html.EditorForModel(x => x.City)
}
num=>num!=2
Ведь эта строка на много проще
var noTwo = nums.Where(x=>x != 2);
// или
var noTwo=from num in nums
where num!=2
select num;
Status Code
. Зачем вам передавать точное описание, что там оно не нашло, если вы можете просто передавать 404
и клиент пусть сам генерирует себе ошибку.return StatusCode
. Есть нормальные методы StatusResult
к которым относятся Ok()
, BadRequest()
и тот же NotFound()
. В эти методы можете передавать какие-то мета-данные если вам нужно. Либо можете использовать Response.Headers
. Но если вам прям очень-очень нужно впихнуть туда вот это вообще об ошибке, так что бы ваш сервер был на все руки мастер, можете сделать что-то типа такого:return NotFound(new { message = "Omg, Not Found!!!" });
JS
вытянуть ошибку? Я бы использовал просто ajax
:$.ajax({
url: '...',
method: 'get',
success: (response): {
let data = JSON.parse(response.responseText);
console.log(data.message); //Omg, Not Found!!!
}
});
Rebuild
вашего solution'а. Потом даблклик по проекту, в этом .csproj
файле ищите секцию ItemGroup
в которой будут ваши Protobuf
. К ним додаёте аттрибут ProtoRoot
, который (Для удобной работы) должен быть таким же как и пусть в аттрибуте Include
без указания названия файла .proto.proto
ваш другой .proto
, они должны быть хотя бы на одном уровне. Другими словами, вы можете импортировать только файлы, который находятся по архитектуре на том же уровне или ниже, потому что в import
запрещено использования символа точки и запятой. Это значит, что вы не сможете выйти на уровень выше if (context.Exception?.GetType() == typeof(SecurityTokenExpiredException))
{
IJwtService jwtService = context.HttpContext.RequestServices.GetService<IJwtService>();
if (context.Request.Cookies.TryGetValue("refresh-token", out string refreshToken))
{
Result<ClaimsPrincipal> principalResult = jwtService.ValidateAndDecodeToken(refreshToken);
if (!principalResult.IsSuccess || principalResult.Value == null)
{
return Task.CompletedTask;
}
Result<string> renewAccessTokenResult = jwtService.Encode(principalResult.Value);
if (!renewAccessTokenResult.IsSuccess && renewAccessTokenResult.ValidationErrors.Any())
{
return Task.CompletedTask;
}
context.Response.Cookies.Append("access-token", renewAccessTokenResult.Value);
context.Response.StatusCode = 200;
context.HttpContext.User = principalResult.Value;
context.Principal = principalResult.Value;
context.Success();
}
}
return Task.CompletedTask;
refresh token
и из него извлекаем ClaimPrincipal
, далее на его основе делаем access token
из того же сервиса и обрабатываем запрос, что бы он возвращал нужный статус. Как говорил Andrei SunnyPh , это допустимая практика (Спасибо) domain: *****
nserver: ns1.reg.ru.
nserver: ns2.reg.ru.
state: REGISTERED, DELEGATED, UNVERIFIED
person: Private Person
registrar: REGRU-RU
admin-contact: http://www.reg.ru/whois/admin_contact
created: 2024-02-11T05:41:55Z
paid-till: 2025-02-11T05:41:55Z
free-date: 2025-03-14
source: TCI