.net - 通过 Ajax (ASP.NET) 远程调用 WebService

标签 .net ajax web-services asmx access-control

客户端 - AJAX

    $.ajax({
        type: "POST",
        url: 'http://www.site.com/Service.asmx/Method',
        data: "{ 'user': 'sampleuser', 'pass': '123456' }",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        async: true,
        success: function (result) {
            alert("result: '" + result+ "'");
        },
        error: function (e) {
            alert("error: '" + e + "'");
        }
    });

服务器 - GLOBAL.ASAX

protected void Application_BeginRequest(object sender, EventArgs e)
{
    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");    
    // HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "http://AllowedDomain.com");
}

服务器 - WEB.CONFIG

<httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
    <add name="Access-Control-Allow-Headers" value="Content-Type, Authorization" />
    <add name="Access-Control-Allow-Methods" value="PUT, GET, POST, DELETE, OPTIONS" />
  </customHeaders>
</httpProtocol>

服务器 - 服务 - C#

[WebMethod(EnableSession = true)]
public string Method(string user, string pass)
{
    // logic
}

发生的事情是,当调用 ajax 时,它会直接进入结果为 null 的成功回调。调试器出现此错误:

XMLHttpRequest cannot load http://www.site.com/Service.asmx/Method.
Origin http://localhost is not allowed by Access-Control-Allow-Origin. 

最佳答案

请尝试在 Ajax 调用中将 url 更改为 origin

关于.net - 通过 Ajax (ASP.NET) 远程调用 WebService,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17453336/

相关文章:

javascript - javascript 中的 ajax 调用无法加载资源错误

c# - 无需安装即可在网络驱动器上运行的点网应用程序

.NET TimeZoneInfo 关于夏令时的错误

c# - WCF、NetTcpBinding、Streamed 传输模式可以双工吗?

javascript - 无法使用 XMLHttpRequest 读取大 pdf 文件

java - Java 中的 Web 服务,初学者问题

java - WCF 客户端禁用加密

c# - Foo.cmd 不会输出进程中的行(在网站上)

php - 如何在 ajax 调用中操作 URL?

javascript - 有没有办法检查 $.when(...) 中 promise 的各个结果,无论最终状态如何