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应用程序的任何建议?
我摆弄了我的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个不同的网站.这会有所不同吗?
| 归档时间: |
|
| 查看次数: |
12659 次 |
| 最近记录: |