• CORS同源策略


    同源策略以及跨域资源共享在大部分情况下针对的是Ajax请求。同源策略主要限制了通过XMLHttpRequest实现的Ajax请求,如果请求的是一个“异源”地址,浏览器将不允许读取返回的内容。

    支持同源策略的浏览器其实并不会阻止跨域请求的发送和响应的接收,它仅仅是阻止程序获取和操作返回的数据而已。
    JSONP仅仅是利用<script>的src标签加载的脚本不受同源策略约束而采取的一种编程技巧,其本身并不是一种官方协议
    JSONP只适用于HTTP-GET请求

    Cross-Origin Resource Sharing

    1 简单跨域资源请求

    CORS规范将GET、HEAD和POST这三个HTTP方法视为“简单HTTP方法”,而将请求报头Accept, Accept-Language, Content-Language以及采用如下三种媒体类型的报头Content-Type称为“简单请求报头”
    application/x-www-form-urlencoded
    multipart/form-data
    text/plain

    CORS规范将服务如下条件的跨域资源请求划分为简单请求:请求采用简单HTTP方法,并且其自定义请求报头空或者所有自定义请求报头均为简单请求报头。

    2 非简单跨域资源请求

    按照CORS规范的规定,浏览器应该采用一种被称为“预检(Preflight)”的机制来完成非简单跨域资源请求。

    The HTTP response headers
    Access-Control-Allow-Origin: <origin> | *
    Access-Control-Expose-Headers: X-My-Custom-Header, X-Another-Custom-Header

    预检涉及的报头
    Access-Control-Max-Age: <delta-seconds>
    Access-Control-Allow-Methods: <method>[, <method>]*
    Access-Control-Allow-Headers: <field-name>[, <field-name>]*

    The HTTP request headers
    Origin: <origin>
    Access-Control-Request-Method: <method>
    Access-Control-Request-Headers: <field-name>[, <field-name>]*

    在默认情况下,利用XMLHttpReuqest发送的Ajax请求不会携带用户凭证相关的敏感信息,如果需要用户凭证附加到Ajax请求上,需要将XMLHttpReuqest的withCredentials 属性设置为True。
    Access-Control-Allow-Credentials: true | false 表明服务器端是否支持用户凭证

  • 相关阅读:
    【Linux基础总结】Linux基本环境
    mysql 源码安装
    windows内存映射文件
    TCHAR和CHAR类型的互转
    删除链表中重复的结点
    iptables防火墙
    两个链表的第一个公共结点
    无人值守安装linux系统
    dns服务 很多问题,后续再研究
    string 类型转换
  • 原文地址:https://www.cnblogs.com/imust2008/p/5673235.html
Copyright © 2020-2023  润新知