同源策略的缺点之一是它不支持不同的端口或子域。因此,如果您将服务托管在诸如 services.site.com 之类的子域上,则您无法在不使用 JSONP 的情况下从 www.site.com 调用该服务。
有没有办法将您的 WCF 服务配置为仅接受来自特定来源的请求?
例子:
$(document).ready(function () {
$("#Button").click(function () {
$.getJSON("http://services.site.com/service.svc/myService?callback=?", function (data) {
var jObj = $.parseJSON(data);
$("#Result").html(jObj.MyValue);
});
});
});
如果这是从 www.site.com 调用的,我希望它能够工作。但是,如果像 www.example.com 这样的另一个站点调用它,我希望 WCF 服务阻止它。
我尝试将 web.config 文件配置为:
<identity>
<dns value="www.example.com"/>
</identity>
但是当我尝试从 www.site.com 拨打电话时,它仍然可以正常工作。我相信这是因为我将 crossDomainScriptAccessEnabled 设置为 true 以便 JSONP 返回正确的回调值。现在只与 WCF 合作了几天。
提前致谢。