Skip to content

Latest commit

 

History

History
35 lines (31 loc) · 2.09 KB

跨域.md

File metadata and controls

35 lines (31 loc) · 2.09 KB

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

有一个不同就是不同源

  • 域名
  • 协议
  • 端口

JSONP 的理念就是,与服务端约定好一个回调函数名,服务端接收到请求后,将返回一段 Javascript,在这段 Javascript 代码中调用了约定好的回调函数,并且将数据作为参数进行传递。当网页接收到这段 Javascript 代码后,就会执行这个回调函数,这时数据已经成功传输到客户端了。

  • 优缺点
    • 优点
      • 它不像XMLHttpRequest对象实现的Ajax请求那样受到同源策略的限制;它的兼容性更好,在更加古老的浏览器中都可以运行
    • 缺点
      • 它只支持 GET 请求,而不支持 POST 请求等其他类型的 HTTP 请求
  • Access-Control-Allow-Origin
    • 响应首部中可以携带这个头部表示服务器允许哪些域可以访问该资源,其语法如下:
    • Access-Control-Allow-Origin: | *
    • 其中,origin 参数的值指定了允许访问该资源的外域 URI。对于不需要携带身份凭证的请求,服务器可以指定该字段的值为通配符,表示允许来自所有域的请求。
  • Access-Control-Allow-Credentials
    • 该字段可选。它的值是一个布尔值,表示是否允许发送Cookie。默认情况下,Cookie不包括在CORS请求之中。设为true,即表示服务器明确许可,Cookie可以包含在请求中,一起发给服务器。其语法如下:
    • Access-Control-Allow-Credentials: true
  • Access-Control-Allow-Methods
    • 该首部字段用于预检请求的响应,指明实际请求所允许使用的HTTP方法。其语法如下:
    • Access-Control-Allow-Methods: [, ]*