zoukankan      html  css  js  c++  java
  • 使用CORS(跨站资源共享Cross-Origin Resource Sharing) 来实现跨域访问

    同源策略

    如果两个页面拥有相同的协议(protocol),端口(如果指定),和主机,那么这两个页面就属于同一个源(origin)
    下表给出了相对http://store.company.com/dir/page.html同源检测的示例:

    URL	    结果	     原因
    http://store.company.com/dir2/other.html	成功	 
    http://store.company.com/dir/inner/another.html	成功	 
    https://store.company.com/secure.html	失败	     协议不同
    http://store.company.com:81/dir/etc.html	失败	     端口不同
    http://news.company.com/dir/other.html	失败	    主机名不同
    

    跨域问题

    出于安全考虑,浏览器会限制脚本中发起的跨站请求。比如,使用 XMLHttpRequest 对象发起 HTTP 请求就必须遵守同源策略。
    跨域并非浏览器限制了发起跨站请求,而是跨站请求可以正常发起,但是返回结果被浏览器拦截了。最好的例子是CSRF跨站攻击原理,请求是发送到了后端服务器无论是否跨域!
    注意:有些浏览器不允许从HTTPS的域跨域访问HTTP,比如Chrome和Firefox,这些浏览器在请求还未发出的时候就会拦截请求,这是一个特例。

    服务器端的配置

    增加几个header就行,参见MDN:HTTP访问控制(CORS)

    location ~ .php(/.*)*$
    {
        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Allow-Headers' 'X-Requested-With';
        略......
    }
    

    Access-Control-Allow-Origin
    指定一个允许向该服务器提交请求的URI.对于一个不带有credentials的请求,可以指定为'*',表示允许来自所有域的请求.
    举个栗子,允许来自 http://mozilla.com 的请求,你可以这样指定:

    Access-Control-Allow-Origin: http://mozilla.com
    
  • 相关阅读:
    二叉树相关题目
    二叉树的遍历
    mysql获取某个表中除了某个字段名外的所有字段名
    设计模式之原型模式
    设计模式之工厂方法模式
    设计模式之代理模式
    设计模式之装饰模式
    设计模式之策略模式
    设计模式之简单工厂模式
    Redis的使用及参考代码
  • 原文地址:https://www.cnblogs.com/jcuan/p/5929454.html
Copyright © 2011-2022 走看看