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
    
  • 相关阅读:
    类的有参方法
    WPF 中的设备无关单位
    Skelta BPM.NET 2006 初探
    Reporting Services Handscript
    C语言I博客作业03
    C语言I博客作业02
    C++类的运算符重载和转换函数结合的问题
    C++ 函数返回类成员的问题
    kaggle 利用linear regression 进行房价预测
    android Could not open: c:\。。。。\.android/avd/XXXX.ini 问题和解决方法
  • 原文地址:https://www.cnblogs.com/jcuan/p/5929454.html
Copyright © 2011-2022 走看看