You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core MVC API如何获取请求来源URL并定制响应

.NET Core MVC API 获取请求来源URL并实现条件逻辑的方案

获取请求来源URL的常用方法

在.NET Core中,你可以直接通过HttpContext.Request对象获取请求来源信息,主要有两种可靠方式:

1. 利用标准Referer请求头

浏览器或大部分客户端发起请求时,会自动携带Referer头标识来源页面/应用的URL,你可以通过强类型方法或直接读取头信息获取:

// 强类型解析Referer(推荐)
var refererUri = HttpContext.Request.GetTypedHeaders().Referer;
if (refererUri != null)
{
    string sourceUrl = refererUri.ToString();
    // 后续判断逻辑
}

// 直接读取Headers
string refererHeader = HttpContext.Request.Headers["Referer"].ToString();
if (!string.IsNullOrEmpty(refererHeader))
{
    Uri sourceUri = new Uri(refererHeader);
    string sourceUrl = sourceUri.ToString();
}

2. 自定义请求头(更可靠的服务间调用方案)

如果是固定应用间调用,考虑到Referer可能被隐私设置屏蔽,建议双方约定自定义请求头(比如X-Source-Application-Url),获取方式如下:

string sourceUrl = HttpContext.Request.Headers["X-Source-Application-Url"].ToString();

条件逻辑实现示例

以你提到的场景为例,根据不同来源返回对应URL:

[ApiController]
[Route("api/[controller]")]
public class SourceController : ControllerBase
{
    [HttpGet("get-response")]
    public IActionResult GetResponseBasedOnSource()
    {
        var referer = HttpContext.Request.GetTypedHeaders().Referer;
        if (referer == null)
        {
            return BadRequest("无法识别请求来源");
        }

        // 按完整URL匹配
        string response = referer.ToString() switch
        {
            "http://www.mywebsite.com:5000/" => "http://www.mywebsite.com:5000/",
            "http://www.mywebsite.com:5005/" => "http://www.mywebsite.com:5005/",
            _ => "未知来源应用"
        };

        // 也可以按Host+Port精准匹配(避免URL路径差异问题)
        // if (referer.Host == "www.mywebsite.com" && referer.Port == 5000)
        // {
        //     response = "http://www.mywebsite.com:5000/";
        // }

        return Ok(response);
    }
}

注意事项

  • Referer头的局限性:部分浏览器、隐私插件会屏蔽该头,或者客户端未携带,此时需用自定义请求头作为备选。
  • 来源合法性校验:如果需要确保请求来源可信,建议维护来源URL白名单,匹配时校验白名单避免伪造头信息。
  • Uri属性匹配更灵活:如果不需要精准匹配完整URL,可以使用Uri的Host、Port、Scheme等属性拆分判断,适配更多场景。

内容的提问来源于stack exchange,提问作者Krunal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 11:37:32