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

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

         

这对于做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.'); } }); 

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

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

我摆弄了我的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.'); } }); 

我删除了“contentType:’application / json’”和“JSON.stringify(…)”调用,我可以发布到服务器。

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

在内部,通过注入指向URL的标记来获取JSONP响应(跨域请求的默认类型)。 因此,JSONP只能使用GET方法。 其他方法将被忽略并回退到GET

将crossDomain属性指定为“true”时,dataType属性将设置为jsonp。 但是你需要一种方法来处理这个jsonp,但是在MVC方面。 您可能需要查看以下stackoverflowpost: ASP.net MVC返回JSONP

你有两个选择,在dataType中你可以放置text或jsonp而不是json。 如果你给我们和你发送的数据的例子将会更容易。

问候

如果您可以控制包含的JS库,最好的方法是使用许多跨域通信库中的一个。 客户端(在您的情况下是MVC应用程序)必须将其配置为接受此类请求,在大多数情况下,这意味着在接受方具有相同的lib。

我到目前为止找到的最好的是EasyXDM。 没有太多限制,可以根据浏览器function进行调整。 但是你必须在两个相互通信的应用程序上拥有它。