在 Visual Studio 开发服务器上为 Soap Web 服务启用 CORS 设置

Posted

技术标签:

【中文标题】在 Visual Studio 开发服务器上为 Soap Web 服务启用 CORS 设置【英文标题】:enable CORS setting for soap web service on visual studio development server 【发布时间】:2015-10-11 07:40:07 【问题描述】:

我正在尝试通过在如下所示的 Web 服务方法中启用“Access-Control-Allow-Origin”标头来添加 CORS 设置。但是,我仍然收到错误:请求的资源上不存在“Access-Control-Allow-Origin”标头。我错过了什么吗?

        [ScriptMethod(UseHttpGet = true)]
        [WebMethod]
        public ClientData[] GetClientData(int Number)
        

            HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "http://localhost:52630");

            ClientData[] Clients = null;

            if (Number > 0 && Number <= 10)
            
                Clients = new ClientData[Number];
                for (int i = 0; i < Number; i++)
                
                    Clients[i].Name = "Client " + i.ToString();
                    Clients[i].ID = i;
                
            

            return Clients;
        

【问题讨论】:

Chrome 不支持 CORS 的 localhost,请参阅:***.com/questions/10883211/… @Shiraz:目前它只适用于 IE,不适用于 Mozilla 或 chrome。 【参考方案1】:

把它放在你的 web.config 中

您可以根据需要进行调整。这个例子我只为.aspx打开

<configuration>
  <system.web>
      <httpHandlers>
        <add verb="GET,HEAD,POST,OPTIONS" path="*.aspx" type="System.Web.UI.PageHandlerFactory" />
      </httpHandlers>
  </system.web>
</configuration>

你可能也需要这样的东西。

    if (Request.HttpMethod == "OPTIONS")
    
        Response.AppendHeader("Access-Control-Allow-Origin", "*");
        Response.AppendHeader("Access-Control-Allow-Headers", "Content-Type");
        return;
    

【讨论】:

@PoloHoleSet 在您的处理程序上。基本思想是,我们需要拦截选项预检并用适当的标题进行回复。 这是我的怀疑,但有时我的假设会让我误入歧途。感谢您回复了这么久。

以上是关于在 Visual Studio 开发服务器上为 Soap Web 服务启用 CORS 设置的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Visual Studio 2019 上为 VB.NET Web 应用程序创建新的构建配置

visual c# 可以开发的项目类型都有哪些?

Npgsql Visual Studio客户端SSL证书

s-s-rS“报表服务器项目”不显示在 Visual Studio 2010 中

Visual Studio + 探索 sftp

Visual Studio常用快捷键