zoukankan      html  css  js  c++  java
  • 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 表明服务器端是否支持用户凭证

  • 相关阅读:
    为什么使用C#开发软件的公司和程序员都很少?
    使用Redis之前5个必须了解的事情
    这段代码为什么捕获不到异常呢?谁能给个解释,谢谢。
    git报错
    C# 常用类库(字符串处理,汉字首字母拼音,注入攻击,缓存操作,Cookies操作,AES加密等)
    你所不知道的 CSS 负值技巧与细节
    CSS 属性选择器的深入挖掘
    探秘 flex 上下文中神奇的自动 margin
    CSS 火焰?不在话下
    不可思议的纯 CSS 实现鼠标跟随效果
  • 原文地址:https://www.cnblogs.com/imust2008/p/5673235.html
Copyright © 2011-2022 走看看