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

使用Classic ASP搭建服务端REST API时返回完整源码而非JSON的问题

问题原因和修复方案

1. 核心问题:ASP未被IIS正确解析

返回完整源代码的本质是你的web服务器(IIS)没有将.asp文件交给ASP经典引擎处理,而是当成普通静态文本文件直接返回了,需要先检查IIS配置:

  • 确认IIS已经安装「ASP」模块:Windows功能中依次找到「万维网服务>应用程序开发功能>ASP」,勾选启用
  • 确认站点对应应用程序池的「托管管道模式」设置为「经典」,64位系统需要同时开启「启用32位应用程序」选项
  • 确认.asp文件所在目录的处理程序映射中,存在.asp后缀的映射规则,指向系统的asp.dll

2. 接口代码优化(simplerest.asp)

你当前代码里多余的HTML标签会污染JSON输出,且没有正确设置响应头,修改后的最简可用代码如下:

<%
' 清除默认输出缓冲
Response.Clear
' 设置响应内容类型为JSON
Response.ContentType = "application/json"
' 设置字符编码避免乱码
Response.Charset = "UTF-8"
' 输出JSON内容,VBScript里连续两个双引号代表转义后的双引号,无需用Chr(34)拼接
Response.Write "{""SomeCert"":""12345""}"
' 结束响应避免输出多余内容
Response.End
%>

如果需要支持跨域调用,可以额外添加一行CORS响应头配置,生产环境建议将*替换为实际允许访问的域名:

Response.AddHeader "Access-Control-Allow-Origin", "*"

3. 前端调用代码修正

你当前的请求URL缺少协议头(http/https),同域调用建议直接用相对路径,跨域调用要补全协议头,修改参考:

function getCert(certNumber) {
    var settings = {
        "async": true,
        "crossDomain": true,
        // 同域直接写相对路径,跨域要写全如"https://你的域名/simplerest.asp"
        "url": "/simplerest.asp",
        "method": "GET",
        "headers": {
            "Accept": "application/json"
        }
    }
    $.ajax(settings).done(function (response) {
        // 服务端设置了正确的Content-Type后,jQuery会自动将响应解析为JSON对象
        alert("certvals.SomeCert is " + response.SomeCert);
    });
}
getCert("dummy");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:15:01