开发者社区> 问答> 正文

js跨域提交form(含文件),如何获取和处理返回的值??报错

具体需求是我前台提交跨域的form表单(含文件),然后他会返回个值给我,我获取这个值并进行回调处理,怎么搞?用了许多关于iframe的js方法都提示跨域报错

展开
收起
爱吃鱼的程序员 2020-06-07 22:33:51 1120 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    跨域,你在你form表单提交的的controller处理(具体看你怎么样的代码),而不是在前端做处理,前端你就看成普通提交

    回复 @wanghahah:谢谢点拨!问题解决了,用的4.5版本httpclient回复 @高momo:403无非就是你请求类型不对,也有可能是直接binary形式,具体的你看下接口文档、或者你也可以贴出部分文档给我们看回复 @wanghahah:后台我也试了通过httpclient发post请求,并且带有文件,请求头Content-type设成multipart/form-data就报403,换成其他格式的那边又识别不了。。找不到解决办法还有我看楼下的评论,醉了,ajax可以同时传文件和表单js肯定是不行的,浏览器行为,你第三方接口因为服务端不会给你配置cors(例如:springaddCorsMappings添加允许跨域的url)、from直接提交表单不存在跨域问题(不通过js),但是存在接收响应xml/json这些(很少有人这么写);现在建议你只有通过后台代码请求接口

    好像是用一个叫做jsonp的东西 可以实现跨域

    但是我要传文件。。ajax好像不能同时传form中的数据和文件

    兄弟,跨域提交就是个伪命题,会有各种安全问题的,你还是直接从你这边的后端绕绕合适

    Js获取数据基本都有跨域问题,百度一下,很多相关文章的

    别玩这个

    这个和网银提交交易以后跳回一个道理,几个方案:

    1、提交成功以后通过重定向url的方式(提交给对方的url后面跟一个gourl参数,即:对方收到你的表单请求并处理完成以后,将会让浏览器重定向到你传给他的gourl,然后会带上参数告诉你gourl对应的后台程序处理是否成功,后台通过输出js/配合iframe就可以实现前段的js回调了)

    2、改为使用swfupload,网上有跨域方案

    3、文件等数据往自己的网站提交,然后自己的网站后台将请求转发到对方网站(这样前台就不跨域了)

    第一个方法是试了下貌似即使返回值为js代码,跳转到我本地的代理文件或者页面,然后在这个代理页面操作父页面还是有跨域问题。要不就只能form提交到自身页面然后就刷新父页面

    跨域请求使用过jsonp格式的,注意ajax的属性与普通的ajax稍有不同,后台接受的时候要设请求头,用于识别跨域请求和获取参数。

    谢谢大家的分享!问题解决了,走的后台用的4.5版本httpclient

    2020-06-07 22:34:04
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JavaScript面向对象的程序设计 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载