开发者社区> 问答> 正文

表单可以跨域吗 说说你对跨域的了解

表单可以跨域吗 说说你对跨域的了解

展开
收起
问答小能手! 2021-01-15 21:07:16 2681 0
1 条回答
写回答
取消 提交回答
  • 来自昆仑山,真名陆离。

    form表单是可以跨域的。 首先,跨域问题产生的原因是浏览器的同源策略,没有同源策略的网络请求有可能会导致CSRF攻击,就是攻击者盗用了你的身份,以你的名义发送恶意请求,因为浏览器会自动将cookie附加在HTTP请求的头字段Cookie中,所以服务端会以为攻击者的操作就是你本人的操作,所以浏览器就默认禁止了请求跨域。
    常用的解决方式:

    JSONP 处理get请求
    跨域资源共享 CORS(需要后端配置,通用做法)
    nginx反向代理解决跨域。nginx 是一款轻量级的 HTTP 服务器,可以用于服务端的反向代理。反向代理是指以代理服务器来接受请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给请求连接的客户端,此时代理服务器对外就表现为一个服务器。我们可以利用这个特性来处理跨域的问题,将请求转发到真正的后端域名就可以啦。

    回到form表单,它也是可以跨域的,因为form提交是不会携带cookie的,你也没办法设置一个hidden的表单项,然后通过js拿到其他domain的cookie,因为cookie是基于域的,无法访问其他域的cookie,所以浏览器认为form提交到某个域,是无法利用浏览器和这个域之间建立的cookie和cookie中的session的,故而,浏览器没有限制表单提交的跨域问题。 浏览器同源策略的本质是,一个域名的 JS ,在未经允许的情况下,不得读取另一个域名的内容。但浏览器并不阻止你向另一个域名发送请求。

    2021-01-15 21:09:11
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载