这是我的问题:
我有2个网络应用程序,想要将文件从第1个上传到第2个。因此,我必须面对“同源政策”问题。
在我的情况下,我拥有第二个网站,第一个网站不是我的。这是我的现有Web应用程序的新客户,并使用PHP开发,由于我缺乏PHP知识,我不能做服务器端PHP编码。所以我只能将一些JavaScript代码放入其中一个页面中。所以我也没有代理服务器选项。
第三个问题是我必须让所有浏览器(包括IE8 +)上传这个文件;所以我也不能使用File API和XHR。
我噩梦的任何解决方案?
答案 0 :(得分:1)
我不知道您需要向上游发送多少数据,但是,这里有两个选项:
1)制作一张包含网址中所有内容数据的图片请求:
将要发送到上游的数据解析为查询字符串参数,这些参数将提交给知道如何从URL读取和收集此数据的特殊Web服务。服务器响应应为空。注意:URL不应超过2000个字符。如果您有大型数据集,则需要使用选项2。
实施例
/* I'd recommend doing the following with jQuery or some other JS framework */
var img = document.createElement('img');
img.src = "http://website2.com/uploadHandler" +
"?data1="+encodeURIComponent(data1) +
"&data2="+encodeURIComponent(data2);
document.getElementsByTagName("body")[0].appendChild( img );
OUTPUT(在body标签的末尾):
<img src="http://website2.com/uploadHandler?data1=myName&data2=myInformation" />
这将导致在上述地址向您的服务器发出HTTP GET请求。诀窍在于,您实际上并不是要提供图像,而是从请求中收集数据。
2)FORM POST:
使用javascript创建表单并使用包含您要上传的数据的输入字段填充该表单。您可以使用myForm.submit()自动提交此表单。使用jQuery,这看起来像:
$(document.body).append( $('\
<form name="myform" action="http://website2.com/uploadHandler">\
<input type="text" name="data1" value="myName" />\
<input type="text" name="data2" value="myInformation" />\
</form>') );
document.myform.submit();
使用此技术将导致加载新页面。但是,您可以使用服务器端的重定向重定向到原始页面。如果您选择重定向,请阅读以下内容:http://www.theserverside.com/news/1365146/Redirect-After-Post