【发布时间】:2013-04-05 00:31:04
【问题描述】:
如何将 JSON 数据作为 url 字符串发布到外部 url(跨域)并绕过访问控制?
这是一个 jquery .ajax 发布请求,由于 Access-Control-Allow-Origin 的原因,它无法发送到外部 url:
var json = JSON.stringify(object);
$.ajax({
type: 'POST',
url: externalurl,
data: json,
dataType: 'json',
success: function(data){console.log(data);},
failure: function(errMsg) {
console.log(errMsg);
},
});
我收到了将数据发布到同一个域并将“请求传递”到外部域的建议,尽管这个解决方案对我来说没有意义。我正在寻找最安全的解决方案。任何帮助将不胜感激。
【问题讨论】:
-
您尝试过使用 JSON-P 吗?我相信在 jQuery 中你使用 'jsonp' 而不是 'json' 作为数据类型这样做,但我不是 100% 确定...
-
当您说“传递请求”解决方案对您没有意义时,您的意思是您不理解它并想要一个解释,或者您确实理解它但认为不适合你现在的情况? @MarkOrmston - JSONP 确实可以让您解决域问题,但它只有在设置外部域来处理它并提供适当的响应时才有效。
-
是的,这种情况不适合,数据必须以json的形式发送。我也无法控制外部服务器,因此 CORS 也不是一个可能的解决方案。
-
@jverban 如果您无法控制其他域服务,则可能无法从中获得响应。可能看看这个..stackoverflow.com/questions/15534640/…
-
好的,我不明白为什么您认为以 JSON 格式发送的数据会阻止您执行“传递请求”的操作。您的 jQuery 将向您自己的 PHP 发出 Ajax 请求,而您的 PHP 将调用其他服务器,然后获取其响应并将其返回给浏览器。无论有没有 JSON,这都是可行的......
标签: php javascript jquery json post