post跨域请求

要跨域发送一个post请求,应该怎么处理呢?

有了解iframe跨域,我的理解是在a.html里面去嵌套一个iframe:b.html,在a.html里面要请求数据的时候,让b.html发送请求,得到服务端返回的数据再传递给a.html . 是这样的吗?有个疑问,为什么b.html可以发送请求呢?

主域名是相同的。
补充一下两个域名:
http://a.sf.com/a.html --- 发送请求的页面
http://b.sf.com/getData?param=1 --- 后端接口

阅读 6k
7 个回答

这么做是因为b.html与服务器同域。
iframe页面间的数据读取也有跨域问题,这种方式不大行啊。
跨域问题出现在:http请求、cookie、跨域。

先说前提:

  • 归根结底,只要是浏览器和服务端交互就会有跨域。所以这个是无法避免的,前端也无法解决(因为同源策略的初衷就是要限制前端的能力)

然后分析下你的需求:

  • 需要前后端跨域通信
  • 又要发送post这种请求

因此,JSONP和图像ping直接排除,传统方法基本就只剩下cors方案了。

所以,解决方案是后端配置cors方案,如何配置可以参考:

ajax跨域,这应该是最全的解决方案了

或者,干脆用websocket,这个方案没有跨域问题(但是和普通ajax开发区别很大)

最后,问下,应该是说的是ajax这种异步post吧?如果不是的话,用传统的表单post也是可以请求的,它没有跨域问题(不过,前端无法获取结果,不属于异步开发)

你说的在a页面嵌入b页面,b页面和服务端是同域的,所以可以正常通讯,那么问题就是a,b页面之间的通讯,a,b两个页面也是跨域,一般来说a页面也是不能和b页面通讯的,但是在html5可以使用postMessage进行通讯,如果不支持html5的话,a页面其实可以通过地址的hash和b页面进行通讯,只要把数据附加在b页面的地址#后面b页面就能拿到数据

jsonp或者服务端打开跨域吧(如果后端不是自己的,那可以说非常烦躁了,iframe虽然可行,但是复用率奇差

不太清楚你们的架构是什么样子,我做的都是自己后端有个express服务器,负责托管静态页面,和转发各种请求到其他人的服务上。我都是自己用http-proxy-middleware, 两秒钟搭建反向代理,所有请求都是向同源的路径发请求,proxy负责转发,直接绕过浏览器,美滋滋。

要跨域发送一个post请求,应该怎么处理呢?

CORS 头,后端记得加上一个 OPTION 方法的处理。

postMessage

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题