好,基本上如此。
我向网页中注入了一些JavaScript代码,并将该页面上的图片上传到另一台服务器。
现在,当我在域上运行它时,它可以正常工作,但是我需要将multipart / form-data请求发布到我不拥有的PHP文件中。
由于这是上载而不是仅获取数据的简单请求,因此我不能在初始调用中使用jsonp,因为响应将不在json中。

使用James Padolsey的跨域脚本,我可以跨域执行$ .get和$ .post请求,但是由于我使用的是$ .ajax,因此它不起作用。
He uses the Yahoo Query Language to acomplish this

这基本上就是我发出请求的方式

$.ajax({
url: 'http://website.com/upload.php',
type: 'POST',
contentType:'multipart/form-data',
data: postData,
success: successCallback,
error : function(XMLHttpRequest, textStatus, errorThrown) {
    console.log('Error');
}
});


我想使其完全基于JavaScript,以避免让服务器执行请求。
因此,重新概括一下,我可以获取图像字节并使用javascript发出请求。但是到目前为止,由于我将$ .ajax设置为“ multipart / form-data”,因此我无法跨域使用。
有没有使YQL跨域请求的另一种方法?

使用iframe发出请求将不起作用,因为iframe的域将发生变化,并且我将无法访问响应。

最佳答案

对于Web开发,这是一个众所周知的难题,称为Same Origin Policy


  Javascript阻止访问跨不同来源的页面的大多数方法和属性。术语“来源”是使用域名,应用程序层协议和运行脚本的HTML文档的端口号(在大多数浏览器中)定义的。当且仅当所有这些值都完全相同时,才将两个资源视为来源相同。


有几种解决方法。


Create your own proxy


创建一个仅将请求转发到另一台服务器并返回其响应的页面
或者,使用Apache的规则构成代理(请参见上面的链接)

使用他人的代理


对于典型的Use YQL to access yahoo's proxy的GET请求
对于POST请求,如果第三方支持Open Data Tables
或者,使用其他公共代理

查看第三方是否符合CORS规范


Cross domain POST query using Cross-Origin Resource Sharing getting no data back

如果您愿意在页面上稍加刷新,请尝试flXHR


它声称实现了确切的XHR api,并且还具有jquery plugin



这些几乎是您唯一的选择

关于javascript - jQuery跨域图片上传,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8544469/

10-13 04:42