SharePoint 2013本地部署REST API调用失败问题求助
我之前在部署SP2013测试环境时也碰到过一模一样的问题——浏览器能正常访问站点、操作文件,但REST API一调用就报找不到Web应用的错误。结合当时的排查经验,给你几个靠谱的解决方向:
1. 检查备用访问映射(AAM)配置
这是最常见的原因!SharePoint的REST API对请求URL的验证比浏览器严格得多,即使你的IP能解析到站点,如果没把这个IP地址添加到备用访问映射里,API请求就会被拒绝。
操作步骤:
- 打开SharePoint管理中心(Central Administration)
- 进入「应用程序管理」→「配置备用访问映射」
- 选择对应的Web应用程序,点击「添加内部URL」
- 把
http://xx.xx.xx.xx添加到合适的区域(比如Intranet或自定义区域),保存配置
添加完后重启一下IIS(运行iisreset命令),再测试API调用。
2. 确保请求头包含正确的Accept字段
SharePoint 2013的REST API需要明确指定返回格式,缺少正确的Accept头可能导致服务端返回异常错误。
在你的GET请求中添加以下请求头:
Accept: application/json;odata=verbose
如果是用Postman、Insomnia这类工具,直接在Headers面板里新增这个键值对就行;如果是代码调用,记得在请求对象里设置这个头。
3. 验证API调用的身份凭证
浏览器访问时会自动传递当前登录的凭证,但工具或代码调用REST API时可能没正确传递权限信息,导致服务端无法识别你的请求所属的Web应用。
- 如果是用Postman:在「Authorization」选项卡选择「NTLM Authentication」,输入你的域账号和密码
- 如果是用curl命令:加上
--ntlm -u 域\用户名:密码参数,比如:curl --ntlm -u contoso\joe:pass123 http://xx.xx.xx.xx/_api/web/lists -H "Accept: application/json;odata=verbose" - 如果是代码调用(比如C#),记得启用Windows身份验证并传递凭证。
4. 检查Web应用程序的IIS绑定扩展
确认你的Web应用程序已经扩展到了对应IP的IIS站点上:
- 打开管理中心→「应用程序管理」→「管理Web应用程序」
- 选中你的Web应用,点击功能区的「扩展」
- 检查是否存在绑定到
http://xx.xx.xx.xx的IIS站点,并且启用了Windows身份验证(SP2013 REST默认依赖这个验证方式)
快速测试技巧
先尝试用站点的主机名(如果配置了DNS解析)调用API,比如http://sp2013site/_api/web/lists。如果这个请求能成功,那基本可以确定是IP地址的备用访问映射没配置的问题。
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

