CORS实现跨域

1. cors是什么

CORS 全称是跨域资源共享(Cross-Origin Resource Sharing),是一种ajax 跨域请求资源的方式

2.cors实现方式

当你使用 XMLHttpRequest 发送请求时,浏览器发现该请求不符合同源策略,会给该请求加一个请求头:Origin,后台进行一系列处理,如果确定接受请求则在返回结果中加入一个响应头:Access-Control-Allow-Origin; 浏览器判断该相应头中是否包含 Origin 的值,如果有则浏览器会处理响应,我们就可以拿到响应数据,如果不包含浏览器直接驳回,这时我们无法拿到响应数据。 CORS 的表象是让你觉得它与同源的 ajax 请求没啥区别,代码完全一样

代码实例

服务器代码

var http = require('http')
var fs = require('fs')
var url = require('url')
var path = require('path')
http.createServer(function (req, res) {
    var pathObj = url.parse(req.url, true)

    switch (pathObj.pathname) {
        case '/getNews':
            var news = [
                "第11日前瞻:中国冲击4金 博尔特再战200米羽球",
                "正直播柴飚/洪炜出战 男双力争会师决赛",
                "女排将死磕巴西!郎平安排男陪练模仿对方核心"
            ]

            res.setHeader('Access-Control-Allow-Origin', 'http://localhost:8080')
            //res.setHeader('Access-Control-Allow-Origin','*')   即允许任何网址访问
            res.end(JSON.stringify(news))
            break
        default:
            fs.readFile(path.join(__dirname, pathObj.pathname), function (e, data) {
                if (e) {
                    res.writeHead(404, 'Not Found')
                    res.end('<h1>404 Not Found</h1>')
                } else {
                    res.end(data)
                }
            })
    }


}).listen(8080)

html代码

<!DOCTYPE html>
<html>
<body>
<div class="container">
    <ul class="news">

    </ul>
    <button class="show">show news</button>
</div>

<script>

    $('.show').addEventListener('click', function () {
        var xhr = new XMLHttpRequest()
        xhr.open('GET', 'http://127.0.0.1:8080/getNews', true)
        xhr.send()
        xhr.onload = function () {
            appendHtml(JSON.parse(xhr.responseText))
        }
    })

    function appendHtml(news) {
        var html = ''
        for (var i = 0; i < news.length; i++) {
            html += '<li>' + news[i] + '</li>'
        }
        $('.news').innerHTML = html
    }

    function $(selector) {
        return document.querySelector(selector)
    }
</script>

</body>

</html>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目1.什么是同源策略? 同源策略(Same origin Policy): 浏览器出于安全方面的考虑,只允许与本...
    FLYSASA阅读 1,752评论 0 6
  • 什么是CORS CORS的英文全称是 Cross origin resource sharing中文译作跨域资源共...
    Bluesbone阅读 257评论 0 1
  • 1. 什么是跨域 跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScri...
    cbw100阅读 6,389评论 2 86
  • 前言:对于跨域请求,很早之前就有去了解过,但因为一直关注的都是服务器后端开发,故也就仅仅停留在概念的理解上而没有机...
    ken_ljq阅读 89,896评论 6 128
  • 今天把拥抱你的客户、看完了。拥抱是一种态度、一种成功的商业哲学:,它可以仅仅是一个微笑、一个眼神,或者是一次坚定有...
    顾国胜阅读 94评论 0 1