我正在使用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
});
}
我是否遗漏了解决同源政策的任何问题。