跨域

跨域指的是浏览器不能执行其他网站的脚本,由浏览器的同源策略造成的,是浏览器的安全机制。

同源策略指的是浏览器的协议,域名,端口必须一致

URL网址的组成:

http://www.baidu.com:80/index.html?username=xxx&password=yyy#hash

协议://域名:端口 / 资源路径?查询字符串#hash


同源策略下发送请求无法实现,会出现以下报错

Access to fetch at ‘xxx’ from origin ‘xxx’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. If an opaque response serves your needs, set the request’s mode to ‘no-cors’ to fetch the resource with CORS disabled.

解决跨域的方法

1. JSONP跨域【目前已基本不用了】

JSONP

JSON、JSONP的区别:

- JSON返回的是一串数据,JSONP返回的是脚本代码(包含一个函数调用)

- JSONP只支持get请求、不支持post请求(类似往页面添加一个script标签,通过src属性去触发对指定地址的请求,故只能是Get请求)

JSONP应用的技巧:

在HTML标签里,一些标签属性比如sec、href这样的获取资源的标签是没有跨域限制的。

2. CORS跨域

后端修改请求头

header(‘Access-Control-Allow-Origin:*’);允许访问的网址

header(‘Access-Control-Allow-Method:POST,GET’);允许访问的方式

3. nginx反向代理

www.baidu.com/index.html需要调用www.sina.com/server.php,可以写一个接口www.baidu.com/server.php,由这个接口在后端去调用www.sina.com/server.php并拿到返回值,然后再返回给index.html

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 什么是跨域 跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实...
    他方l阅读 1,141评论 0 2
  • 什么是跨域 跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实...
    Yaoxue9阅读 1,414评论 0 6
  • 1. 什么是同源策略 同源是指域名、协议、端口相同。同源策略(Same-Origin Policy)是浏览器的一个...
    65_刘璐阅读 795评论 0 0
  • 前言 前后端分离的开发模式越来越流行,目前绝大多数的公司与项目都采取这种方式来开发,它的好处是前端可以只专注于页面...
    Briseis阅读 25,233评论 1 22
  • CORS 一、CORS内部机制与实现 CORS(Cross-Origin Resource Sharing,跨域资...
    fenerchen阅读 822评论 0 0

友情链接更多精彩内容