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 ,在未经允许的情况下,不得读取另一个域名的内容。但浏览器并不阻止你向另一个域名发送请求。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。