美文网首页
CROS和JSON跨域

CROS和JSON跨域

作者: 94very | 来源:发表于2018-09-29 22:21 被阅读0次

在浏览器的同源策略中,一个网站在未退出的情况下不能请求其他网站的资源,这是为了防止安全攻击。

1. CORS 跨域

      CORS 跨域只需在后台文件的头部进行设置,适用于 GET,POST 请求,但在有些比较老的浏览器中不支持。

app.all('*', function(req, res, next) {
    res.setHeader("Access-Control-Allow-Origin", 'http://localhost:8080');  
    res.setHeader("Access-Control-Allow-Credentials", true);
    res.header("Access-Control-Allow-Headers", "X-Requested-With");
    res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
    res.header("X-Powered-By",' 3.2.1');
    res.header("Content-Type", "application/json;charset=utf-8");
    next();
});

      1. Access-Control-Allow-Orgin

            允许的域名,单域名或通配符

      2. Access-Control-Credentials

            是否允许 cookie 跨域

      3. Content-Type

            内容的类型

            application/x-www-form-urlencoded

            multipart/form-data

            application/json

            application/xml

      4. Access-Control-Allow-Methods

            允许跨域的请求

注意

如果要允许 cookie 跨域前端 AJAX 请求也要进行设置

xhrFields: {
            withCredentials: true,
          },

    预检请求

            在跨域的实际请求之前浏览器会发送一次预检请求

            1. 发送预检请求,使用的是 options 方法,主要首部字段(示例)

Access-Control-Request-Method: POST
Access-Control-Request-Headers: X-PINGOTHER, Ccontent-Type

            告知服务器

                实际请求将使用 POST 方法

                实际请求将自定义两个首部字段 X-PINGOTHER 和 Content-Type

            2. 预检请求的响应首部字段(示例)

Access-Control-Allow-Origin: http://foo.example
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Headers: X-PINGOTHER, Content-Type
Access-Control-Max-Age: 86400

            告知浏览器

                允许请求的方法 POST GET OPTIONS

                允许修改的首部字段 X-PINGOTHER Content-Type

                有效时间为 86400 秒,在这段时间内无需再发送预检请求,但该时间如果超过浏览器默认时间则以浏览器默认时间为准

https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS

2. JSONP 跨域

      JSONP 跨域是并不是一种规定只是相互之间的一种约定,只能跨域 GET 请求。

      1. 在前端页面中的 jquery 中的 AJAX 中添加下面属性

             dataType: "jsonp",
             jsonp: "callback",

      2. 在后台页面返回数据时使用的时 JSONP 格式

            res.jsonp(data);


这里介绍的是使用 jquery 封装的 AJAX,相对比 CORS 应该比 JSONP 好使用。

相关文章

  • CROS和JSON跨域

    在浏览器的同源策略中,一个网站在未退出的情况下不能请求其他网站的资源,这是为了防止安全攻击。 1. CORS 跨域...

  • 解决node跨域问题

    //cros模块:node跨域cros模块 步骤一:安装cros npm install cors --save-...

  • 跨域-CROS

  • 跨域上传图片 cros方式

    FormData ajax 跨域上传图片 cros方式 FormData参考: http://www.jians...

  • JSONP、CROS和postMessage跨域

    浏览器出于安全方面的考虑,只允许与本域下的接口交互。不同源的客户端脚本在没有明确授权的情况下,不能读写对方的资源。...

  • 跨域

    关于跨域大概可以分为 iframe 的跨域和纯粹的跨全域请求。 3种跨全域方法: 1、JSONP 全称:JSON ...

  • 跨域的解决方式与演示

    关于跨域大概可以分为 iframe 的跨域和纯粹的跨全域请求。 3种跨全域方法: 1、JSONP 全称:JSON ...

  • ajax(2)

    6.jsonp跨域请求 7、JSON的了解?XML和JSON的区别?

  • 在 AJAX 中开启 CROS

    什么是 CROS cros 是 xhr 中的高级特性,支持跨域请求。 服务端需要在响应头中添加下面的字段来支持其他...

  • 造成 Provisional headers are shown

    跨域使用了json

网友评论

      本文标题:CROS和JSON跨域

      本文链接:https://www.haomeiwen.com/subject/pyxioftx.html