zoukankan      html  css  js  c++  java
  • 跨域理解及常用解决方案

    什么是跨域?

    浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域。
    跨域并不是请求发不出去,请求能发出去,服务端能收到请求并正常返回结果,只是结果被浏览器拦截了。
    这是由于浏览器的同源策略而导致的,同源策略限制了不同源之间的资源进行交互,用于隔离潜在的恶意文件的安全机制,并且是浏览器最基本的安全机制。

    以 https://www.cnblogs.com/liangshibo/p/12275129.html 为例:域名是指"//"和"/"之间的全部内容,也就是"www.cnblogs.com",当我们从另一个域名的js中获取该域名下的资源时,就会产生跨域。
    当然,如果你直接在地址栏里获取资源,是不会产生跨域的,这也就是为什么有的后台接口在地址栏里打开没问题,用ajax获取就报错的原因。

    常见的跨域场景有哪些?

    1、同一域名,不同端口。http://www.demo.com:8000/a.js && http://www.demo.com/b.js
    2、同一域名,不同协议。http://www.demo.com:8000/a.js && https://www.demo.com/b.js
    3、域名和域名对应相同 IP。http://localhost:8000/a.js && http://127.0.0.1:8000/b.js

    如何解决跨域?

    1、jsonp,是json的一种使用模式,仅支持get方式,这里就不写了,毕竟一搜一大堆,我应该也用不到

    2、跨域资源共享(cors),在服务器端的webconfig设置允许跨域。以下是代码:

    <configuration>
      <system.webServer>
        <httpProtocol>
          <customHeaders>
            <add name="Access-Control-Allow-Methods" value="OPTIONS,POST,GET"/>
            <add name="Access-Control-Allow-Headers" value="x-requested-with,content-type"/>
            <add name="Access-Control-Allow-Origin" value="*" />
          </customHeaders>
        </httpProtocol>
      </system.webServer>
    </configuration>
  • 相关阅读:
    一转眼,十年间~~~
    怎样安装PHPnow,并开始使用?
    js的事件类型
    ie兼容性问题 前传
    外层div撑不开的解决办法
    CSS3 新属性搜罗整理
    webApp学习之路
    花式使用CSS3 transition
    20种新颖的按钮风格和效果【附源码】
    酷酷的文本效果
  • 原文地址:https://www.cnblogs.com/liangshibo/p/12275129.html
Copyright © 2011-2022 走看看