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

如何通过jQuery Ajax调用.NET WebForm方法?跨域报错求配置

解决.NET WebForm跨域CORS问题的配置方案

首先确认你的GetData方法已经标记了[WebMethod]和[ScriptMethod(UseHttpGet = true)](因为你用的是GET请求),示例代码如下:

using System.Web.Services;
using System.Web.Script.Services;

public partial class WebForm : System.Web.UI.Page
{
    [WebMethod]
    [ScriptMethod(UseHttpGet = true)] // 必须添加此特性,允许GET方式调用WebMethod
    public static string GetData()
    {
        // 你的业务逻辑代码
        return "请求返回的数据";
    }
}

针对出现的CORS错误,可通过以下两种方案解决:

方案一:单页面添加CORS响应头(仅当前页面生效)

在WebForm页面的Page_Load事件中添加跨域允许头,处理请求时自动携带CORS相关响应信息:

protected void Page_Load(object sender, EventArgs e)
{
    // 允许所有域名跨域,生产环境建议指定具体域名,例如"http://your-frontend.com"
    Response.AddHeader("Access-Control-Allow-Origin", "*");
    
    // 处理浏览器自动发送的OPTIONS预请求
    if (Request.HttpMethod == "OPTIONS")
    {
        Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
        Response.AddHeader("Access-Control-Allow-Headers", "Content-Type");
        Response.End();
    }
}

方案二:web.config全局配置(整个项目生效)

修改项目根目录的web.config,通过HTTP协议配置全局添加CORS响应头,无需逐个页面修改:

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <!-- 允许指定域名跨域,生产环境替换为实际前端域名 -->
      <add name="Access-Control-Allow-Origin" value="*" />
      <!-- 允许的请求方法类型 -->
      <add name="Access-Control-Allow-Methods" value="GET, POST, OPTIONS" />
      <!-- 允许携带的请求头 -->
      <add name="Access-Control-Allow-Headers" value="Content-Type" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

额外注意事项:

  • 生产环境禁止使用*允许所有域名,务必替换为实际的前端业务域名,降低安全风险。
  • 检查Ajax请求的url,建议去掉末尾的斜杠,改为"http://localhost:49313/WebForm.aspx/GetData",避免路径匹配异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:22:47