之前用node.js和websocket 做了一个聊天服务器,客户端是运行在 jsp 中的。
重点来了:产品经理要求我聊天功能加入发送图片的功能,这时候问题来了,$.getJSON只是get请求,上传图片get请求满足不了。
请各位支个招,第一次发贴,谢谢大家。
![]() | 1 rekey 2015-06-11 11:37:57 +08:00 呃,你确定一下是跨域问题还是 get or post 问题。 |
![]() | 2 zkd8907 2015-06-11 11:37:58 +08:00 上传图片构造iframe表单,后台返回的结果加callback参数进行回调 =。= |
![]() | 3 wy315700 2015-06-11 11:38:35 +08:00 你应该弄一个跨域认证 |
4 kingwrcy 2015-06-11 11:41:02 +08:00 1.jsonp 2.Access-Control-Allow-Origin:* 你要post的,那就是方案2了 |
5 misaka14 OP 是跨域问题,因为node.js是跑在其他服务器,上传图片的接口也是在node.js中的。而jsp是运行在自己本地的。 |
6 misaka14 OP @rekey 是跨域问题,因为node.js是跑在其他服务器,上传图片的接口也是在node.js中的。而jsp是运行在自己本地的。 |
![]() | 7 rekey 2015-06-11 11:46:18 +08:00 看情况定,如果IE9以上啥的,cors 吧。很好的。 |
![]() | 8 zomco 2015-06-11 11:46:30 +08:00 via iPhone 有一种东西,叫cors |
9 misaka14 OP @rekey 我测试过一个,貌似有时是不管用的。cors是不是只能用 外网IP 的接口吧。如果我自己本地测试,是内网的IP,貌似测试不了的。 只能用IE9以上?那完了,我们公司最低IE8 |
![]() | 10 tajpure 2015-06-11 11:57:10 +08:00 最近刚解决ajax图片传输跨域的问题,http://www.slideshare.net/SlexAxton/breaking-the-cross-domain-barrier,这里面讲了几种跨域的解决方案。我采用的是CORS,在服务端的response里加入如下包头: ''' response.setHeader("Access-Control-Allow-Origin", "你的域名(在测试的时候你可以使用 * )"); response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); response.setHeader("Access-Control-Max-Age", "3600"); response.setHeader("Access-Control-Allow-Headers", "x-requested-with"); ''' |
![]() | 11 yeyeye 2015-06-12 08:31:48 +08:00 我说说理论上可行的方案,啥浏览器都兼容。只要支持iframe和script 首先构建一个表单,上传文件的表单,加入一个字段为随机字符,把这个表单post到iframe里,服务器收到文件,在数据库中记录随机字符和图片的地址。 然后每几秒向图片服务器用jsonp的方式带着那个随机字符查看服务器里是否有这个相关的图片 有的话得到http地址 如果iframe的onload属性可以的话 也可以onload之后再请求 完 简单有效 |
14 mingyun 2015-07-12 20:44:23 +08:00 cors只能在高级浏览器了 |