public void GivenNullRequest_ThrowsArgumentNullException() { Microsoft.AspNetCore.Http.HttpRequest nullRequest = null; Action act = () => nullRequest.GetRawSecurityToken(); act.Should().Throw <ArgumentNullException>(); }
/// <summary>获取返回地址</summary> /// <param name="request">请求对象</param> /// <param name="referr">是否使用引用</param> /// <returns></returns> public virtual String GetReturnUrl(IHttpRequest request, Boolean referr) { var url = request.Get("r"); if (url.IsNullOrEmpty()) { url = request.Get("redirect_uri"); } if (url.IsNullOrEmpty() && referr) { #if __CORE__ url = request.Headers["Referer"].FirstOrDefault() + ""; #else url = request.UrlReferrer + ""; #endif } if (!url.IsNullOrEmpty() && url.StartsWithIgnoreCase("http")) { var baseUri = request.GetRawUrl(); var uri = new Uri(url); if (uri != null && uri.Host.EqualIgnoreCase(baseUri.Host)) { url = uri.PathAndQuery; } } return(url); }
public static HttpRequestMessage ToHttpRequestMessage(this Microsoft.AspNetCore.Http.HttpRequest req) => new HttpRequestMessage() .SetMethod(req) .SetAbsoluteUri(req) .SetHeaders(req) .SetContent(req) .SetContentType(req);
private static IEnumerable <KeyValuePair <string, string> > GetClaims(Microsoft.AspNetCore.Http.HttpRequest httpRequest) { if (httpRequest == null) { throw new ArgumentNullException(nameof(httpRequest)); } IIdentity identity = httpRequest.HttpContext?.User?.Identity; if (identity == null) { return(new List <KeyValuePair <string, string> >()); } if (identity is ClaimsIdentity == false) { return(new List <KeyValuePair <string, string> >()); } ClaimsIdentity claimsIdentity = identity as ClaimsIdentity; List <KeyValuePair <string, string> > claims = InternalHelpers.ToKeyValuePair(claimsIdentity); return(claims); }
public static Uri GetUri(this Microsoft.AspNetCore.Http.HttpRequest request) { if (request == null) { throw new ArgumentNullException("request"); } if (string.IsNullOrWhiteSpace(request.Scheme)) { throw new ArgumentException("Http request Scheme is not specified"); } if (!request.Host.HasValue) { throw new ArgumentException("Http request Host is not specified"); } StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append(request.Scheme).Append("://").Append((object)request.Host); if (request.Path.HasValue) { stringBuilder.Append(request.Path.Value); } if (request.QueryString.HasValue) { stringBuilder.Append((object)request.QueryString); } return(new Uri(stringBuilder.ToString())); }
/// <summary> /// Serialize the <paramref name="source"/>. /// </summary> public static async Task <RequestData> FromAsync(this RequestData target, HttpRequest source, CancellationToken cancellationToken = default) { // Verify that we can convert the string to an HttpMethod VerifyMethodName(source.Method); target.Method = source.Method; target.EncodedUrl = source.GetEncodedUrl(); target.Headers = new Dictionary <string, StringValues>(); target.ContentType = source.ContentType; target.ContentLength = source.ContentLength; target.Headers = CopyWithoutContentHeaders(source.Headers); target.BodyAsString = await source.GetRequestBodyAsync(); return(target); void VerifyMethodName(string methodName) { try { _ = new HttpMethod(methodName); } catch (Exception e) { InternalContract.Fail($"The following HTTP method is not recognized: {methodName}: {e.Message}"); } } }
/// <summary> /// Генерация заголовков /// </summary> /// <param name="request"></param> /// <param name="uri"></param> /// <returns></returns> private static HttpRequestMessage CreateProxyHttpRequest(Microsoft.AspNetCore.Http.HttpRequest request, Uri uri) { var requestMessage = new HttpRequestMessage(); var requestMethod = request.Method; if (!HttpMethods.IsGet(requestMethod) && !HttpMethods.IsHead(requestMethod) && !HttpMethods.IsDelete(requestMethod) && !HttpMethods.IsTrace(requestMethod)) { var streamContent = new StreamContent(request.Body); requestMessage.Content = streamContent; } // Copy the request headers foreach (var header in request.Headers) { if (string.Compare(header.Key, "port", StringComparison.OrdinalIgnoreCase) == 0) { continue; } if (!requestMessage.Headers.TryAddWithoutValidation(header.Key, header.Value.ToArray()) && requestMessage.Content != null) { requestMessage.Content?.Headers.TryAddWithoutValidation(header.Key, header.Value.ToArray()); } } requestMessage.Headers.Host = uri.Authority; requestMessage.RequestUri = uri; requestMessage.Method = new HttpMethod(request.Method); return(requestMessage); }
public void Fill(Microsoft.AspNetCore.Http.HttpRequest x) { if (x.HasFormContentType) { foreach (var y in x.Form.Select(m => m.Key)) { foreach (Match match in indexDetector.Matches(y)) { var val = match.Value; if (val[0] == '.' || val[0] == ']') { val = val.Substring(1); } if (val[val.Length - 1] == '.' || val[val.Length - 1] == '[') { val = val.Substring(0, val.Length - 1); } if (match.Index == 0) { this.Add(string.Empty, val); } else { this.Add(y.Substring(0, match.Index), val); } } } } }
private static Session GetSession(Microsoft.AspNetCore.Http.HttpRequest httpRequest) { if (httpRequest == null) { throw new ArgumentNullException(nameof(httpRequest)); } bool isNewSession = false; string sessionId = null; if (httpRequest.HttpContext?.Session != null && httpRequest.HttpContext.Session.IsAvailable == true) { sessionId = httpRequest.HttpContext.Session.GetString("X-KissLogSessionId"); if (string.IsNullOrEmpty(sessionId) || string.Compare(sessionId, httpRequest.HttpContext.Session.Id, true) != 0) { isNewSession = true; httpRequest.HttpContext.Session.SetString("X-KissLogSessionId", httpRequest.HttpContext.Session.Id); } sessionId = httpRequest.HttpContext.Session.Id; } return(new Session { IsNewSession = isNewSession, SessionId = sessionId }); }
public static Uri GetAbsoluteUri(this Microsoft.AspNetCore.Http.HttpRequest req) { var uriBuilder = new UriBuilder() { Scheme = req.Scheme, Host = req.Host.Host, Port = req.Host.Port.HasValue ? req.Host.Port.Value : default,
public async Task GivenNullInput_ReturnsNull() { Microsoft.AspNetCore.Http.HttpRequest nullRequest = null; // ReSharper disable once ExpressionIsAlwaysNull var actual = await nullRequest.ToRequestForSigning(_signature); actual.Should().BeNull(); }
/// <summary> /// Get real client IP from request /// </summary> /// <param name="request">HttpRequestMessage</param> /// <returns>IPAddress</returns> public static IPAddress GetClientIp(this Microsoft.AspNetCore.Http.HttpRequest request) { if (request == null) { return(null); } return(request.HttpContext.Connection.RemoteIpAddress); }
/// <summary> /// 添加请求头 /// </summary> /// <param name="request">Http请求</param> /// <param name="log">日志</param> private void AddHeaders(Microsoft.AspNetCore.Http.HttpRequest request, ILog log) { if (request.Headers == null || request.Headers.Count == 0) { return; } log.Params("Headers:").Params(JsonHelper.ToJson(request.Headers)); }
/// <summary> /// 添加Cookie /// </summary> /// <param name="request">Http请求</param> /// <param name="log">日志</param> private void AddCookie(Microsoft.AspNetCore.Http.HttpRequest request, ILog log) { log.Params("Cookie:"); foreach (var key in request.Cookies.Keys) { log.Params(key, request.Cookies[key]); } }
public static IActionResult Run( [HttpTrigger(AuthorizationLevel.Function, "put", Route = "createupdateschedulerjob/{name}")] Microsoft.AspNetCore.Http.HttpRequest req, String name, ILogger log, ExecutionContext context ) { try { var config = new ConfigurationBuilder() .SetBasePath(context.FunctionAppDirectory) .AddEnvironmentVariables() .Build(); var credentials = Methods.GetAzureCredentials(); SchedulerManagementClient schedulerManagementClient = new SchedulerManagementClient( credentials ); Schedule schedule; using (var reader = new StreamReader(req.Body)) { try { var body = reader.ReadToEnd(); log.LogInformation(body); schedule = JsonConvert.DeserializeObject( body, (new Schedule()).GetType() ) as Schedule; } catch (Newtonsoft.Json.JsonException q) { return((ActionResult) new BadRequestObjectResult(q.Message)); } } var parsed = ResourceId.FromString(config["scheduler_job_collection_id"]); schedulerManagementClient.SubscriptionId = parsed.SubscriptionId; var definition = CreateJobDefinition( config["queue_scheduler"], schedule.message.ToBase64JsonString(), schedule.recurrence ); schedulerManagementClient.Jobs.CreateOrUpdate( parsed.ResourceGroupName, parsed.Name, name, definition ); return((ActionResult) new OkResult()); } catch (Exception e) { log.LogError(e.Message); log.LogError(e.StackTrace); log.LogError(e.Source); throw e; } }
public GetRawSecurityToken() { _request = new DefaultHttpRequest(new DefaultHttpContext()) { Method = HttpMethods.Get, Scheme = "https", Host = new HostString("localhost", 443), Path = new PathString("/api") }; }
public static string getIPAddress(this Microsoft.AspNetCore.Http.HttpRequest Request) { string ip = Request.Headers["CF-Connecting-IP"]; if (ip != null) { return(ip); } return(Request.HttpContext.Connection.RemoteIpAddress.ToString()); }
public static KissLog.Http.HttpRequest Create(Microsoft.AspNetCore.Http.HttpRequest httpRequest) { if (httpRequest == null) { throw new ArgumentNullException(nameof(httpRequest)); } Session session = KissLog.InternalHelpers.WrapInTryCatch(() => GetSession(httpRequest)); session = session ?? new Session(); bool isAuthenticated = httpRequest.HttpContext?.User?.Identity?.IsAuthenticated ?? false; KissLog.Http.HttpRequest result = new KissLog.Http.HttpRequest(new KissLog.Http.HttpRequest.CreateOptions { Url = new Uri(httpRequest.GetDisplayUrl()), HttpMethod = httpRequest.Method, UserAgent = GetUserAgent(httpRequest.Headers), HttpReferer = GetHttpReferrer(httpRequest.Headers), RemoteAddress = httpRequest.HttpContext?.Connection?.RemoteIpAddress?.ToString(), MachineName = InternalHelpers.GetMachineName(), IsNewSession = session.IsNewSession, SessionId = session.SessionId, IsAuthenticated = isAuthenticated }); RequestProperties.CreateOptions propertiesOptions = new RequestProperties.CreateOptions(); propertiesOptions.Cookies = InternalHelpers.ToKeyValuePair(httpRequest.Cookies); propertiesOptions.Headers = InternalHelpers.ToKeyValuePair(httpRequest.Headers); propertiesOptions.QueryString = InternalHelpers.ToKeyValuePair(httpRequest.Query); propertiesOptions.Claims = GetClaims(httpRequest); if (httpRequest.HasFormContentType) { if (KissLogConfiguration.Options.Handlers.ShouldLogFormData.Invoke(result) == true) { propertiesOptions.FormData = InternalHelpers.ToKeyValuePair(httpRequest.Form); } } if (KissLog.InternalHelpers.CanReadRequestInputStream(propertiesOptions.Headers)) { if (KissLogConfiguration.Options.Handlers.ShouldLogInputStream.Invoke(result) == true) { propertiesOptions.InputStream = KissLog.InternalHelpers.WrapInTryCatch(() => { return(ModuleInitializer.ReadInputStreamProvider.ReadInputStream(httpRequest)); }); } } result.SetProperties(new RequestProperties(propertiesOptions)); return(result); }
/// <summary> /// 判断是否异步请求 /// </summary> /// <param name="request"></param> /// <returns></returns> public static bool IsAjaxRequest(this Microsoft.AspNetCore.Http.HttpRequest request) { bool isAjax = false; var xreq = request.Headers.ContainsKey("x-requested-with"); if (xreq) { isAjax = request.Headers["x-requested-with"] == "XMLHttpRequest"; } return(isAjax); }
public static UploadImageRequest ToEntity(this Microsoft.AspNetCore.Http.HttpRequest httpRequest)//(this IFormFile file) { IFormFile file = httpRequest.Form.Files[0]; var request = new UploadImageRequest() { File = file }; return(request); }
public static string GetAbsoluteUri(this Microsoft.AspNetCore.Http.HttpRequest request) { return(new StringBuilder() .Append(request.Scheme) .Append("://") .Append(request.Host) .Append(request.PathBase) .Append(request.Path) .Append(request.QueryString) .ToString()); }
private void SetSubstituteBody(Microsoft.AspNetCore.Http.HttpRequest request) { var ms = new MemoryStream(); using var sw = new StreamWriter(ms, Encoding.UTF8, -1, true); sw.Write("token=xyzz0WbapA4vBCDEFasx0q6G&team_id=T1DC2JH3J&team_domain=testteamnow&channel_id=G8PSS9T3V&channel_name=foobar&user_id=U2CERLKJA&user_name=roadrunner&command=%2Fwebhook-collect&text=&response_url=https%3A%2F%2Fhooks.slack.com%2Fcommands%2FT1DC2JH3J%2F397700885554%2F96rGlfmibIGlgcZRskXaIFfN&trigger_id=398738663015.47445629121.803a0bc887a14d10d2c447fce8b6703c"); sw.Flush(); sw.Close(); ms.Seek(0, SeekOrigin.Begin); request.Body.Returns(ms); }
private bool TryRetrieveToken(Microsoft.AspNetCore.Http.HttpRequest request, out string token) { token = null; Microsoft.Extensions.Primitives.StringValues authHeaders; if (!request.Headers.TryGetValue("Authorization", out authHeaders) || authHeaders.Count() > 1) { return(false); } var bearerToken = authHeaders.ElementAt(0); token = bearerToken.StartsWith("Bearer ") ? bearerToken.Substring(7) : bearerToken; return(true); }
public CoreHttpRequest(Microsoft.AspNetCore.Http.HttpRequest request, IRazorViewEngine razorViewEngine, CancellationToken cancellationToken) { this.uri = request.GetAbsoluteUri(); this.request = request; this.CancellationToken = cancellationToken; this.Properties = new Dictionary <string, object>(); this.Headers = request.Headers .Select(kvp => kvp.Key.PairWithValue((string[])kvp.Value)) .ToDictionary(); this.Method = new HttpMethod(request.Method); this.RazorViewEngine = razorViewEngine; }
public int GetCurrentUser(int currentUser, Microsoft.AspNetCore.Http.HttpRequest request) { if (request == null) { return(0); } if (request.HttpContext.User != null && request.HttpContext.User.Claims != null && request.HttpContext.User.Claims.Count() > 2) { var user = request.HttpContext.User.Claims.ElementAt(1); currentUser = int.Parse(user.Value); } return(currentUser); }
//Chekc Role in the JWT Token public static string ValidateAndGetRole(Microsoft.AspNetCore.Http.HttpRequest R) { JWTService JWT = new JWTService("FZeDfgPkyXaDFyMwQfSbIoJhF", "localhost:4200", "localhost:4200"); string Role = ""; foreach (KeyValuePair <string, Microsoft.Extensions.Primitives.StringValues> item in R.Headers) { if (item.Key == "Authorization") { Role = JWT.ValidateToken(item.Value.ToString()); } } return(Role); }
public ToRequestForSigning() { _httpRequest = new DefaultHttpContext().Request; _httpRequest.Method = "POST"; _httpRequest.Scheme = "https"; _httpRequest.Host = new HostString("dalion.eu", 9000); _httpRequest.PathBase = new PathString("/tests"); _httpRequest.Path = new PathString("/api/rsc1"); _httpRequest.QueryString = new QueryString("?query=1&cache=false"); _httpRequest.Headers[HeaderName.PredefinedHeaderNames.Digest] = "SHA-256=xyz123="; _signature = new Signature { Headers = new[] { HeaderName.PredefinedHeaderNames.Digest } }; }
/// <summary> /// Creates a SharePointContext instance with the specified HTTP request. /// </summary> /// <param name="httpRequest">The HTTP request.</param> /// <returns>The SharePointContext instance. Returns <c>null</c> if errors occur.</returns> public SharePointContext CreateSharePointContext(HttpRequest httpRequest) { if (httpRequest == null) { throw new ArgumentNullException(nameof(httpRequest)); } // SPHostUrl Uri spHostUrl = SharePointContext.GetUriFromQueryStringParameter(httpRequest, SharePointContext.SPHostUrlKey); if (spHostUrl == null) { return(null); } // SPAppWebUrl Uri spAppWebUrl = SharePointContext.GetUriFromQueryStringParameter(httpRequest, SharePointContext.SPAppWebUrlKey); if (spAppWebUrl == null) { spAppWebUrl = null; } // SPLanguage string spLanguage = httpRequest.Query[SharePointContext.SPLanguageKey]; if (string.IsNullOrEmpty(spLanguage)) { return(null); } // SPClientTag string spClientTag = httpRequest.Query[SharePointContext.SPClientTagKey]; if (string.IsNullOrEmpty(spClientTag)) { return(null); } // SPProductNumber string spProductNumber = httpRequest.Query[SharePointContext.SPProductNumberKey]; if (string.IsNullOrEmpty(spProductNumber)) { return(null); } return(CreateSharePointContext(spHostUrl, spAppWebUrl, spLanguage, spClientTag, spProductNumber, httpRequest)); }
// https://www.programmersought.com/article/49936898629/ public static async Task <string> GetRequestBodyAsync(this HttpRequest request) { FulcrumAssert.IsNotNull(request.Body, CodeLocation.AsString()); request.EnableBuffering(); request.Body.Position = 0; var sr = new StreamReader(request.Body); var body = await sr.ReadToEndAsync(); request.Body.Position = 0; if (body == "") { FulcrumAssert.IsTrue(request.ContentLength == null || request.ContentLength.Value == 0, CodeLocation.AsString()); } return(body); }
/// <summary> /// Gets the SharePoint host url from QueryString of the specified HTTP request. /// </summary> /// <param name="httpRequest">The specified HTTP request.</param> /// <returns>The SharePoint host url. Returns <c>null</c> if the HTTP request doesn't contain the SharePoint host url.</returns> public static Uri GetUriFromQueryStringParameter(HttpRequest httpRequest, string queryStringParameter) { if (httpRequest == null) { throw new ArgumentNullException(nameof(httpRequest)); } string parameterValue = TokenHandler.EnsureTrailingSlash(httpRequest.Query[queryStringParameter]); Uri uriValue; if (Uri.TryCreate(parameterValue, UriKind.Absolute, out uriValue) && (uriValue.Scheme == Uri.UriSchemeHttp || uriValue.Scheme == Uri.UriSchemeHttps)) { return uriValue; } return null; }
/// <summary> /// 添加表单参数 /// </summary> /// <param name="request">Http请求</param> /// <param name="log">日志</param> private async Task AddFormParamsAsync(Microsoft.AspNetCore.Http.HttpRequest request, ILog log) { if (IsMultipart(request.ContentType)) { return; } request.EnableBuffering(); var result = await FileHelper.ToStringAsync(request.Body, isCloseStream : false); if (string.IsNullOrWhiteSpace(result)) { return; } log.Params("表单参数:").Params(result); }
/// <summary> /// Creates a SharePointContext instance with the specified HTTP request. /// </summary> /// <param name="httpRequest">The HTTP request.</param> /// <returns>The SharePointContext instance. Returns <c>null</c> if errors occur.</returns> public SharePointContext CreateSharePointContext(HttpRequest httpRequest) { if (httpRequest == null) { throw new ArgumentNullException(nameof(httpRequest)); } // SPHostUrl Uri spHostUrl = SharePointContext.GetUriFromQueryStringParameter(httpRequest, SharePointContext.SPHostUrlKey); if (spHostUrl == null) { return null; } // SPAppWebUrl Uri spAppWebUrl = SharePointContext.GetUriFromQueryStringParameter(httpRequest, SharePointContext.SPAppWebUrlKey); if (spAppWebUrl == null) { spAppWebUrl = null; } // SPLanguage string spLanguage = httpRequest.Query[SharePointContext.SPLanguageKey]; if (string.IsNullOrEmpty(spLanguage)) { return null; } // SPClientTag string spClientTag = httpRequest.Query[SharePointContext.SPClientTagKey]; if (string.IsNullOrEmpty(spClientTag)) { return null; } // SPProductNumber string spProductNumber = httpRequest.Query[SharePointContext.SPProductNumberKey]; if (string.IsNullOrEmpty(spProductNumber)) { return null; } return CreateSharePointContext(spHostUrl, spAppWebUrl, spLanguage, spClientTag, spProductNumber, httpRequest); }
/// <summary> /// Creates a SharePointContext instance. /// </summary> /// <param name="spHostUrl">The SharePoint host url.</param> /// <param name="spAppWebUrl">The SharePoint app web url.</param> /// <param name="spLanguage">The SharePoint language.</param> /// <param name="spClientTag">The SharePoint client tag.</param> /// <param name="spProductNumber">The SharePoint product number.</param> /// <param name="httpRequest">The HTTP request.</param> /// <returns>The SharePointContext instance. Returns <c>null</c> if errors occur.</returns> protected abstract SharePointContext CreateSharePointContext(Uri spHostUrl, Uri spAppWebUrl, string spLanguage, string spClientTag, string spProductNumber, HttpRequest httpRequest);
protected override SharePointContext CreateSharePointContext(Uri spHostUrl, Uri spAppWebUrl, string spLanguage, string spClientTag, string spProductNumber, HttpRequest httpRequest) { string contextTokenString = TokenHandler.GetContextTokenFromRequest(httpRequest); if (string.IsNullOrEmpty(contextTokenString)) { return null; } SharePointContextToken contextToken = null; try { contextToken = TokenHandler.ReadAndValidateContextToken(contextTokenString, httpRequest.Host.Value); } //catch (WebException) //{ // return null; //} catch (AudienceUriValidationFailedException) { return null; } return new SharePointAcsContext(spHostUrl, spAppWebUrl, spLanguage, spClientTag, spProductNumber, contextTokenString, contextToken, Configuration); }