我公开了一个WCF服务,并且我正在尝试使用一个客户端通过一个jQuery ajax调用来调用这些WCF服务。该代码在IE 9中似乎运行良好,但在Safari 5.0.3中出现错误
这是下面这段代码:
<script type="text/javascript">
$(document).ready(function () {
$('#butCallAjax').click(function () {
jQuery.support.cors = true;
$.ajax(
{
type: 'POST',
url: 'http://<server_name>/Service.svc/login',
data: '{"Domain":"mydomain","UserName":"myusername","Password":"mypassword"}',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (data) {
alert('success');
$.each(data, function (i, theItem) {
try {
//alert('success add combo');
// Other browsers
}
catch (error) {
alert('error found');
// combo.add(option); // really old browser
}
});
},
error: function (msg, url, line) {
alert('error trapped in error: function(msg, url, line)');
alert('msg = ' + msg + ', url = ' + url + ', line = ' + line);
}
});
//alert('button click');
});
});
</script>有人能帮我吗?谢谢!从Safari调用error函数,我可以看到两个警告弹出窗口。
发布于 2012-02-29 17:46:30
好了,在做了将近一周的大量试验和错误之后,终于找到了解决方案!
在global.asax文件中添加了这个,safari似乎能够访问POST方法!
String corsOrigin, corsMethod, corsHeaders;
corsOrigin = HttpContext.Current.Request.Headers["Origin"];
corsMethod = HttpContext.Current.Request.Headers["Access-Control-Request-Method"];
corsHeaders = HttpContext.Current.Request.Headers["Access-Control-Request-Headers"];
if (corsOrigin == null || corsOrigin == "null")
{
corsOrigin = "*";
}
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", corsOrigin);
if (corsMethod != null)
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", corsMethod);
if (corsHeaders != null)
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", corsHeaders);
if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
{
return;
} https://stackoverflow.com/questions/9426973
复制相似问题