支持http和https的同源策略

时间:2011-12-14 06:56:04

标签: wcf jquery cross-domain same-origin-policy

我正在使用JQuery Ajax使用POST方法请求API。

我的网页将在移动设备上观看,因此我们保持非常轻便,并使用http作为协议。 我们很少有API传递需要保护的令牌,因此我们计划使用https协议。

我们在WCF服务上公开了端点http和https。此外,通过在我们的web.config

中添加以下配置,确保允许交叉脚本
<httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Methods" value="POST, GET, OPTIONS"/>
        <add name="Access-Control-Allow-Headers" value="*"/>
      </customHeaders>
</httpProtocol>

在WCF操作合同中,我通过设置来检查OPTIONS标头是否返回 以上标题。请求永远不会到达WCF操作。浏览器本身将请求作为同源策略停止。

我观察到getJSON有效,但几乎没有限制,例如它不允许POST方法以及传递复杂对象。

让我感到惊讶的是,我已经看到允许这样做的实现。以下是交叉脚本中的一个示例。

前:

function onSuccess(data) {
console.log("in on success");
console.log(data);
$.ajax({
url: closure_compiler_service,
type: 'POST',
dataType: 'json',
data: 'js_code=' + $("#eval").val() + "&output_info=compiled_code&output_format=json&compilation_level=WHITESPACE_ONLY&formatting=pretty_print",
success: function (jscode) {
//do something...
},
error: function () {
console.log("Error from Closure compile");
},
async: false
});
}

我是否遗漏了解决同源政策的任何问题。

0 个答案:

没有答案