跨域发布到ASP.Net MVC应用程序

Tom*_*eck 10 architecture asp.net-mvc jquery jsonp cross-domain

我正在开发一个应用程序,其中HTML和javascript块被传递给不同的客户端.我可以通过将以下内容添加到Web配置文件来获取html/javascript块:

  <system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
  <httpProtocol>
      <customHeaders>
          <add name="Access-Control-Allow-Origin" value="*" />
          <add name="Access-Control-Allow-Headers" value="Content-Type" />
          <add name="Access-Control-Allow-Methods" value="POST, GET, OPTIONS" />
      </customHeaders>
  </httpProtocol>
Run Code Online (Sandbox Code Playgroud)

这对于做GETS非常有用.我遇到的问题是使用jQuery跨域执行POST:

        $.ajax(
    {
        type: 'POST',
        url: url,
        crossDomain: true,
        data: JSON.stringify(data),
        dataType: 'json',
        contentType: 'application/json',
        success: function(responseData, textStatus, jqXHR) 
        {
            alert('Success');
        },
        error: function (responseData, textStatus, errorThrown) 
        {
            alert('POST failed.');
        }
    });
Run Code Online (Sandbox Code Playgroud)

我会有很多客户在使用我的应用程序(希望如此).我考虑过使用代理,但我无法控制客户端服务器,所以我无法安装httpHandler来充当代理.

关于我如何将来自不同客户的json数据跨域转发到我的ASP.Net MVC应用程序的任何建议?

Tom*_*eck 6

我摆弄了我的ajax调用,它似乎正在工作(与上面的ajax调用相比):

        $.ajax(
    {
        type: 'POST',
        url: url,
        crossDomain: true,
        data: data,
        dataType: 'json',
        success: function(responseData, textStatus, jqXHR) 
        {
            alert('success');
        },
        error: function (responseData, textStatus, errorThrown) 
        {
            alert('POST failed.');
        }
    });
Run Code Online (Sandbox Code Playgroud)

我删除了"contentType:'application/json'"和"JSON.stringify(...)"调用,我可以发布到服务器.

我不确定如何解释它为何起作用.有任何想法吗?有安全问题吗?我在笔记本电脑上做这一切.我通过IIS 7设置了2个不同的网站.这会有所不同吗?