出于安全考虑,js不可能跨域访问。一个请求是否跨域,看它发送请求的协议、域名、端口是否和页面的协议、域名、端口是否一致。
解决跨域问题可以从三个方面解决:
- 浏览器。
- 跨域。
- xhr请求。
解决方法
- 关闭浏览器的安全设置。对网站访问的所有浏览器都需要设置,不太现实,一般不采用这种策略。
- 使用jsonp。原理:把数据封装成一个js代码,返回给浏览器。因为返回的是一个段js代码,所以返回的数据类型就不是xhr。所以能解决跨域的问题。缺点是需要后端代码进行配合。
- 添加响应的头部信息,
Access-Control-Allow-Origin : *
和Access-Control-Allow-Methods : *
。如果请求需要发送json格式的数据需要在响应的头部信息添加Access-Control-Allow-Headers : Content-Type
。
网友评论