【发布时间】:2012-01-11 02:27:28
【问题描述】:
我有一个 JSON WCF 服务,并且我编写了一些 javascript 来访问这样的服务,
function stuffClick2() {
$.ajax({
url: "http://192.168.54.98/JsonWCFService/Service1.svc/Post",
type: "POST",
contentType: "application/json",
data: '{"x":"1","y":"2","message":"The answer is: "}',
dataType: "html",
success: function(data) { $('body').html(data); }
});
}
我编写了一个 HTML 页面,其中包含上述 javascript。 HTML 页面是使用 IIS 提供的。
当我在 PC 上使用 chrome 访问 HTML 页面时,我看到这些操作按此顺序发送到 WCF JSON 服务,
OPTIONS /JsonWCFService/Service1.svc/Post HTTP/1.1
POST /JsonWCFService/Service1.svc/Post HTTP/1.1
之前的 OPTIONS 失败了,但是我让 OPTIONS 调用返回了这个头,然后让它工作,
Access-Control-Allow-Origin: *
但是我上面定义的回调不起作用,
success: function(data) { $('body').html(data); }
我知道 WCF 服务返回了类似的内容,
<b> The answer is 3 </b>
但是当回调被调用时,数据的值是一个空字符串。
当我在不同的浏览器 (IE) 中运行 html 页面时,它只会导致 POST 调用,而不是 OPTIONS 调用,那么它就可以工作。我注意到 IE 警告我它存在安全风险并询问我是否要继续。
【问题讨论】: