Javascript 当您可以访问外部服务器但不能访问同一域服务器时,从外部服务器提交/检索数据的最佳方式

Javascript 当您可以访问外部服务器但不能访问同一域服务器时,从外部服务器提交/检索数据的最佳方式,javascript,php,sdk,xss,Javascript,Php,Sdk,Xss,我正在开发一种SDK类型的东西,用于向我运行的服务提交数据(包括文件上传) 我正在做研究,试图找出在不受XSS限制的情况下向外部服务器(我的服务器)提交数据和获取响应的最佳方式 当前设置如下所示: 客户托管一台服务器,并使用我的服务器端库。 它们生成一个客户端页面,从我的服务器加载所需的JS。 客户端页面从我的服务器请求数据(如果在页面加载时未从SDK传递数据),并向用户显示信息。 然后,用户触发一个事件,该事件将数据(可能包括文件上载)提交到我的服务器(而不是带有SDK库的本地服务器)。 我的

我正在开发一种SDK类型的东西,用于向我运行的服务提交数据(包括文件上传)

我正在做研究,试图找出在不受XSS限制的情况下向外部服务器(我的服务器)提交数据和获取响应的最佳方式

当前设置如下所示:

客户托管一台服务器,并使用我的服务器端库。 它们生成一个客户端页面,从我的服务器加载所需的JS。 客户端页面从我的服务器请求数据(如果在页面加载时未从SDK传递数据),并向用户显示信息。 然后,用户触发一个事件,该事件将数据(可能包括文件上载)提交到我的服务器(而不是带有SDK库的本地服务器)。 我的服务器响应成功或失败,客户端JS会适当地处理它

一些注意事项: 我的服务器是一个我完全控制的私有PHP服务器。 虽然我可以通过客户的服务器路由所有数据(因为他们正在使用我的库),但这并不理想,因为它需要为客户进行更多的设置,对最终用户来说速度较慢,并且处理文件上载是有问题的,因为我希望这些文件在我的服务器上,而不是在他们的服务器上。 我想文件上传输入可能在iframe中。这允许直接上传到我的服务器吗? 由于客户使用的是带有API密钥的我的库,因此我可以通过在页面加载时将身份验证令牌传递给前端,然后通过任何通信方法将其传递给我的服务器,从而对客户机的请求进行身份验证

我对体系结构的变化持开放态度,但这是我的理想设置。我只是不确定什么前端方法最适合实现这一点。

如果您只需要发出GET请求就可以了,但由于您提到了文件上载,听起来您也需要发布帖子

就你的情况而言,这可能有效。简短的解释是,如果您向另一个域发出
XMLHttpRequest
请求,浏览器将发送一个名为
Origin
的额外头。服务器需要使用名为
Access Control Allow Origin
的附加标头进行响应,标头的值为
*
,或浏览器在
Origin
标头中发送的值。使用CORS时会有一些细微差别和问题,因此我建议阅读上面的链接以获得全面的解释


设置CORS后,您应该能够使用
XMLHttpRequest
to.

因此,您需要注意的一点是,其余内容太广泛,因此,尽管此链接可能会回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能无效。-我在回答中增加了一点细节。