通过服务器端设置解决前端AJAX请求跨域访问WebServie(C#开发,IIS发布)
问题:前端通过ajax调用时候发生错误跨域访问的错误
<!--功能说明:Ajax调用WebService
<script type="text/javascript">
function test(){
$.ajax({
type: "POST",
contentType: "application/json;charset=utf-8",
url: "http://www.xxxx.org/test.asmx/TestMethod",
data:"{a:12345,b:'abcd'}",
success: function (response) {
alert("成功:" + response.d);
},
error: function (msg) {
alert("错误:" + msg);
}
})
}
</script>
解决方法:在WebService服务配置文件web.config文件中添加跨域访问许可,共有2个地方需要修改
1、在configuration节点中的system.web节点里面添加
<!--客服端跨域调用要使用-->
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
表示可以支持Http的get和post访问,可以更具需求进行修改
2、在在configuration节点中直接添加
<!--客服端跨域调用要使用-->
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Methods" value="OPTIONS,POST,GET"/>
<add name="Access-Control-Allow-Headers" value="x-requested-with,content-type"/>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
</system.webServer>
其中Access-Control-Allow-Origin的值可以依据具体情况进行设定,为“*”表示所有网站都可以访问
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统