form表单是可以跨域的。
首先,跨域问题产生的原因是 浏览器的同源策略,没有同源策略的网络请求有可能会导致CSRF攻击,就是攻击者盗用了你的身份,以你的名义发送恶意请求,因为浏览器会自动将cookie附加在HTTP请求的头字段Cookie中,所以服务端会以为攻击者的操作就是你本人的操作,所以浏览器就默认禁止了请求跨域。
常用的解决方式:
JSONP 处理get请求
跨域资源共享 CORS(需要后端配置,通用做法)
nginx反向代理解决跨域。nginx 是一款轻量级的 HTTP 服务器,可以用于服务端的反向代理。反向代理是指以代理服务器来接受请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给请求连接的客户端,此时代理服务器对外就表现为一个服务器。我们可以利用这个特性来处理跨域的问题,将请求转发到真正的后端域名就可以啦。
回到form表单,它也是可以跨域的,同源策略主要是限制js行为,form表单提交的结果js是无法拿到,所以没有去限制。当然不限制也是有漏洞了,csrf攻击就能利用form表单能带cookie的特点. 而cookie的新属性SameSite就能用来限制这种情况
浏览器同源策略的本质是,一个域名的 JS ,在未经允许的情况下,不得读取另一个域名的内容。但浏览器并不阻止你向另一个域名发送请求。
网友回答文明上网理性发言已有0人参与
发表评论: