如何解决Ajax调用WebAPI时出现的Error code 0问题
解决Ajax调用WebAPI时返回Code:0的问题
看起来你遇到的这个Code: 0错误通常和请求的基础配置或者跨域问题有关,咱们一步步排查解决:
1. 修复Ajax请求的URL格式
你当前的Ajax URL是localhost:3079/api/cities,这里缺少了协议头(http:// 或 https://),浏览器会把它当作当前页面的相对路径来解析,直接导致请求地址错误。
修改后的代码应该是:
$.ajax({ url: 'http://localhost:3079/api/cities', // 补上http://协议头 type: 'GET', dataType: 'json', // ... 其他代码保持不变 });
2. 正确配置WebAPI的CORS(生产环境必备)
虽然你尝试用命令行禁用浏览器网页安全,但这种方法不仅容易配置失效,还只能用于本地临时调试,生产环境完全不可用。正确的做法是在WebAPI项目中主动启用CORS支持:
在ASP.NET Core WebAPI中配置CORS:
- 先安装CORS依赖包(如果未安装):
Install-Package Microsoft.AspNetCore.Cors
- 在
Program.cs(.NET 6+版本)中添加CORS服务并配置允许的跨域策略:
var builder = WebApplication.CreateBuilder(args); // 添加CORS服务并定义跨域策略 builder.Services.AddCors(options => { options.AddPolicy("AllowFrontend", policy => { // 替换成你前端页面的实际地址,比如http://localhost:5500 policy.WithOrigins("http://localhost:你的前端端口") .AllowAnyHeader() .AllowAnyMethod(); }); }); // 添加控制器服务 builder.Services.AddControllers(); var app = builder.Build(); // 必须在路由配置前启用CORS app.UseCors("AllowFrontend"); app.UseRouting(); app.MapControllers(); app.Run();
- 也可以直接在控制器或Action上标记启用CORS:
[EnableCors("AllowFrontend")] [HttpGet()] public IActionResult GetCities() { return Ok(CitiesDatastore.Current.Cities); }
3. 用开发者工具定位具体问题
打开浏览器开发者工具的Network标签,重新触发请求,查看以下信息:
- 请求的完整URL是否正确
- 请求的实际状态码(比如404、403、500等)
- Response面板里的具体错误描述
这些细节能帮你快速定位问题:比如404说明URL仍有误,403则是CORS配置未生效。
4. 确保浏览器禁用网页安全的命令正确(仅本地调试用)
如果还是想用浏览器调试模式,要确保命令行参数完全正确:
- Chrome浏览器的正确命令:
chrome.exe --disable-web-security --user-data-dir="C:/ChromeDevSession"
注意必须指定--user-data-dir参数,且要关闭所有Chrome窗口后再执行该命令,否则禁用安全的配置不会生效。
按照上面的步骤排查,应该能解决你遇到的问题。
内容的提问来源于stack exchange,提问作者KopMaverick
相关产品推荐
相关产品推荐

