CORS通信

  • CORS全称是“跨域资源共享”

  • 允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。

  • Content-Type:只限于三个值application/x-www-form-urlencoded、multipart/form-data、text/plain

  • 当action为get时候,浏览器用x-www-form-urlencoded的编码方式把form数据转换成一个字串(name1=value1&name2=value2...),然后把这个字串append到url后面,用?分割,加载这个新的url。

  • 当action为post时候,浏览器把form数据封装到http body中,然后发送到server。
    如果没有 type=file 的控件,用默认的 application/x-www-form-urlencoded 就可以了。
    但是如果有 type=file 的话,就要用到 multipart/form-data 了。

  • text/plain是纯文本传输的意思,在发送邮件时要设置这种编码类型,否则会出现接收时编码混乱的问题,网络上经常拿text/plain和 text/html做比较,其实这两个很好区分,前者用来传输纯文本文件,后者则是传递html代码的编码类型.

  • (1)Access-Control-Allow-Origin
    该字段是必须的。它的值要么是请求时Origin字段的值,要么是一个*,表示接受任意域名的请求。

  • (2)Access-Control-Allow-Credentials
    该字段可选。它的值是一个布尔值,表示是否允许发送Cookie。默认情况下,Cookie不包括在CORS请求之中。设为true,即表示服务器明确许可,Cookie可以包含在请求中,一起发给服务器。这个值也只能设为true,如果服务器不要浏览器发送Cookie,删除该字段即可。

  • (3)Access-Control-Expose-Headers 该字段可选。

  • 与JSONP的比较
    CORS与JSONP的使用目的相同,但是比JSONP更强大。
    JSONP只支持GET请求,CORS支持所有类型的HTTP请求。JSONP的优势在于支持老式浏览器,以及可以向不支持CORS的网站请求数据。

你可能感兴趣的:(CORS通信)