• 使用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
    
  • 相关阅读:
    服务器安装软件
    SQL server
    改变下blog思维
    react 父子组件互相通信
    linux下,文件的权限和数字对应关系详解
    Linux 下非root用户使用docker
    Two 观察者 observer pattern
    one 策略模式 strategy
    ssm maven spring AOP读写分离
    Unknown column in 'where clause'
  • 原文地址:https://www.cnblogs.com/jcuan/p/5929454.html
Copyright © 2020-2023  润新知