Asp.Net WebService 如何解决跨域问题
时间: 2024-05-11 13:16:51 浏览: 89
可以通过在Web.config文件中添加一个HttpModule来解决跨域问题,具体做法如下:
1. 在Web.config文件的<system.webServer>标签中添加以下代码:
```
<httpModules>
<add name="HeaderModule" type="Demo.CrossDomain.HttpHeaderModule, Demo.CrossDomain" />
</httpModules>
```
其中,name属性指定模块名称,type属性指定模块类的完整限定名。
2. 创建一个名为HttpHeaderModule的类,继承自IHttpModule接口,并实现其Init和Dispose方法。示例代码如下:
```
using System.Web;
namespace Demo.CrossDomain
{
public class HttpHeaderModule : IHttpModule
{
public void Dispose()
{
}
public void Init(HttpApplication context)
{
context.BeginRequest += SetCORSHeader;
}
void SetCORSHeader(object sender, EventArgs e)
{
HttpContext.Current.Response.Headers.Add("Access-Control-Allow-Origin", "*");
HttpContext.Current.Response.Headers.Add("Access-Control-Allow-Methods", "*");
HttpContext.Current.Response.Headers.Add("Access-Control-Allow-Headers", "*");
}
}
}
```
其中,SetCORSHeader方法设置了跨域访问的响应头信息。
3. 在WebService类的方法上标记[ScriptMethod]特性,示例代码如下:
```
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string HelloWorld()
{
return "Hello World!";
}
```
其中,ScriptMethod特性指定了响应格式为JSON。
这样,在客户端访问WebService时就可以跨域访问了。
阅读全文