0

这是我的问题:

我有 2 个 Web 应用程序,想将文件从第一个上传到第二个。所以我不得不面对“同源政策”的问题。

就我而言,我拥有第二个网站,而第一个不是我的。它适用于我现有 Web 应用程序的新客户,它是用 php 开发的,由于我缺乏 php 知识,我无法进行服务器端 php 编码。所以我只能将一些 JavaScript 代码放入其中一个页面。所以我也没有代理服务器选项。

第三个问题是我必须在所有浏览器(包括 IE8+)中上传这个文件;所以我也不能使用 File API 和 XHR。

我的噩梦有什么解决办法吗?

4

1 回答 1

1

我不知道您需要向上游发送多少数据,但是,这里有两个选项:

1) 提出在 URL 中包含所有相关数据的图像请求:

将您要向上游发送的数据解析为查询字符串参数,这些参数将提交给一个特殊的 Web 服务,该服务知道如何从 URL 读取和收集这些数据。服务器响应应该是空的。注意: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 );

输出(在正文标签的末尾):

<img src="http://website2.com/uploadHandler?data1=myName&data2=myInformation" />

这将导致向上述地址的服务器发出 HTTP GET 请求。诀窍是您实际上不会提供图像,而是从请求中收集数据。

2)表格邮寄:

使用 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

于 2013-01-08T20:04:46.667 回答