【发布时间】:2016-08-15 08:29:32
【问题描述】:
让两个 Visual Studio 运行在具有以下 URL 的同一台计算机上:
http://localhost:47503(网络接口,#1)
http://localhost:12345(调用以上web api的客户端,#2)
客户端 (#2) 硬编码站点 #1 的 <script src="http://localhost:47503/file.js"></script>。 file.js 内部是一个函数:
function GetData() {
$.ajax({
url: 'http://localhost:47503/api/autos',
type: 'GET',
dataType: 'json',
data: { "a": '_1', "b": 'TEST', "c": "val c" },
success: function (result) {
alert("success");
}
});
跨域请求被阻止:同源策略不允许读取 远程资源在 http://localhost:47503/api/autos?a=_1&b=TEST&c=value+c。 (原因:CORS 标头“Access-Control-Allow-Origin”缺失)。
认为由于脚本是从客户端 #1 加载的,因此可以从客户端 #2 调用它,从而以某种方式绕过相同的源策略?来自客户端 #1 的脚本回调客户端 #1。 JSONP 和 CORS 是已知的问题解决方案,但想知道上述是否可行。
【问题讨论】:
标签: javascript ajax cors jsonp same-origin-policy