相关疑难解决方法(0)

ASP.NET中CORS的问题

我有这个应用程序,我想在Web.Config中设置我的自定义标题,唉,这并不总是万无一失.

  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
    <add name="Access-Control-Allow-Methods" value="*" />
    <add name="Access-Control-Allow-Headers" value="*" />
  </customHeaders>
Run Code Online (Sandbox Code Playgroud)

上面的设置和它的迭代如

  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
    <add name="Access-Control-Allow-Methods" value="OPTIONS,GET,PUT,DELETE,POST" />
    <add name="Access-Control-Allow-Headers" value="Authorization,Content-Type" />
  </customHeaders>
Run Code Online (Sandbox Code Playgroud)

在所有场景中都没有为我工作过.到目前为止,这种设置在大约50%的测试机器中起作用,405 Method Not Allowed在其他测试机器中起作用.

替代方法是在WebApiConfig.cs此处设置并取消注释自定义标头Web.config.

//Web API Cross origin requests - Enable
  var cors = new EnableCorsAttribute("*", "*", "*");
  config.EnableCors(cors);
Run Code Online (Sandbox Code Playgroud)

为什么这里有这么多的含糊不清,我怎么知道哪些地方CORS会一直有效?我真的很感兴趣设置CORS,Web.config因为我希望在部署版本中灵活地修改它.

c# asp.net-mvc cors http-status-code-405 asp.net-web-api

5
推荐指数
1
解决办法
6285
查看次数

ajax post works vs. angularjs $ http无法使用ASP.NET MVC 4

我有两个项目客户端和服务器端.客户端项目是纯htmljs.服务器端是ASP.NET MVC 4和Web Api.因为我需要两个项目来启用CROS功能.我添加到服务器的webconfig中:

<system.webServer>
 <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="Content-Type" />
      </customHeaders>
    </httpProtocol>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

正在运行的Ajax Post版本:

$.post(url, appContext).done(
                function(data, textStatus, jqXHR) {
                    successFn(data, textStatus);
                })
                .fail(
                    function(jqXHR, textStatus, err) {
                        errorFn(err, textStatus);
                    });
Run Code Online (Sandbox Code Playgroud)

angular $ http发布版本不起作用:

 $http({
                url: url,
                method: 'POST',
                params: { appContext: appContext },
                headers: {
                    'Content-Type': 'application/x-www-form-urlencoded'
                    /*'Accept': 'text/json'*/}
            }).success(successFn).error(errorFn);
Run Code Online (Sandbox Code Playgroud)

当我使用$ http时,我收到两个错误:

  1. 选项url 405(方法不允许)
  2. POST url 500(内部服务器错误)

ASP.NET MVC方法是

[System.Web.Http.HttpPost]
public List<Module> GetModules([FromBody]SessionContext appContext)
{
 return  CreateModules();
}
Run Code Online (Sandbox Code Playgroud)

编辑:

角度模型的配置:

var …
Run Code Online (Sandbox Code Playgroud)

asp.net-ajax asp.net-mvc-4 angularjs

4
推荐指数
1
解决办法
1万
查看次数