同源策略以及跨域资源共享在大部分情况下针对的是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 表明服务器端是否支持用户凭证

CORS同源策略的更多相关文章

  1. Django 之Ajax&Json&CORS&同源策略&Jsonp用法

    什么是Json 定义: JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式.它基于 ECMAScript (w3c制定的js规范)的一个子集 ...

  2. 同源策略与 JSONP CORS

    同源策略与 JSONP CORS 同源策略 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以 ...

  3. 浏览器同源策略与ajax跨域方法汇总

    原文 什么是同源策略 如果你进行过前端开发,肯定或多或少会听说过.接触过所谓的同源策略.那么什么是同源策略呢? 要了解同源策略,首先得理解“源”.在这个语境下,源(origin)其实就是指的URL.所 ...

  4. [CORS:跨域资源共享] 同源策略与JSONP

    Web API普遍采用面向资源的REST架构,将浏览器最终执行上下文的JavaScript应用Web API消费者的重要组成部分."同源策略"限制了JavaScript的跨站点调用 ...

  5. Apache2 同源策略解决方案 - 配置 CORS

    什么是同源策略 现在的浏览器大多配有同源策略(Same-Origin Policy),具体表现如下: 浏览某一网站,例如 http://www.decembercafe.org/.这个网页中的 Aja ...

  6. 关于安全性问题:(XSS,csrf,cors,jsonp,同源策略)

    关于安全性问题:(XSS,csrf,cors,jsonp,同源策略) Ajax 是无需刷新页面就能从服务器获取数据的一种方法.它的核心对象是XHR,同源策略是ajax的一种约束,它为通信设置了相同的协 ...

  7. 同源策略 & 高效调试CORS实现

    # 目录 为什么有同源策略? 需要解决的问题 CORS跨域请求方案 preflight withCredentials 附:高效.优雅地调试CORS实现 ----------------------- ...

  8. 浏览器的同源策略及CORS跨域解决方案 DRF

    一个源的定义 如果两个页面的协议,端口(如果有指定)和域名都相同,则两个页面具有相同的源. 举个例子: 下表给出了相对http://a.xyz.com/dir/page.html同源检测的示例: UR ...

  9. 同源策略jsonp和cors

    同源策略: 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web是构建在同源策略基础之上 ...

随机推荐

  1. 系列文章--SQLite文章

    SQLite 随机取n行的方法   SQLite多线程写锁文件解决方案   sqlite和sql server语法上的一些区别   sqlite编程插入标示字段,获得新id   C# SQLiteHe ...

  2. Mysql 拿指定经纬度与数据库多条经纬度进行距离计算 (转)

    公式如下,单位米: 第一点经纬度:lng1 lat1 第二点经纬度:lng2 lat2 round(6378.138*2*asin(sqrt(pow(sin( (lat1*pi()/180-lat2* ...

  3. PHP 16 个编程法则

    HP是最好的编程语言.对于PHP开发者来说,掌握一些编程法则是十分重要的.而在PHP中,以双下划线(__)开头的方法称为魔术方法,它们扮演着非常重要的角色. 常用的魔术方法包括: -__constru ...

  4. php curl get post 方法的封装

    在开发的时候,需要请求别人的接口,那么就要用到curl了 由于很多地方都会用到,就封装了两个,以后应该都会用到 /* * @desc curl POST 方式请求接口 */ function post ...

  5. MVC FileDownLoad

    public ActionResult MatDownload() { string ShopId = Session["ShopId"].ToString(); var self ...

  6. python利用scapy模块写一个TCP路由追踪和扫描存活IP的脚本

    前言: 没有前言 0x01 from scapy.all import * import sys from socket import * import os from threading impor ...

  7. 解决git gnutls_handshake失败

    sudo apt-get install build-essential fakeroot dpkg-dev mkdir ~/git-openssl cd ~/git-openssl sudo apt ...

  8. oracle数据库中函数的递归调用

    如有下面的表结构AAAA,用一个字段prev_id表示记录的先后顺序,要对其排序,需要用的递归函数 ID PREV_ID CONT 99   a 23 54 d 21 23 e 54 33 c 33 ...

  9. ubuntu双网卡准备配置

    近日有个需求,交换机有两台,做了堆叠,服务器双网卡,每个分别连到一台交换机上.这样就需要将服务器的网卡做成主备模式,以增加安全性,使得当其中一个交换机不通的时候网卡能够自动切换. 整体配置不难,网上也 ...

  10. pthread thread mutex synchronous asynchronous communication

    设置进程绑定状态的函数pthread_attr_setscopepthread_attr_t 指向属性结构的指针第二个参数 绑定类型 pthread_scope_system()pthread_sco ...