Ajax解決跨域之設(shè)置CORS響應(yīng)頭實(shí)現(xiàn)跨域案例詳解
1.設(shè)置CORS響應(yīng)頭實(shí)現(xiàn)跨域
跨源資源共享(CORS)
1.1 什么是CORS
CORS(Cross-Origin Resource Sharing),跨域資源共享。CORS 是官方的跨域解決方 案,它的特點(diǎn)是不需要在客戶端做任何特殊的操作,完全在服務(wù)器中進(jìn)行處理,支持 get 和 post 請(qǐng)求??缬蛸Y源共享標(biāo)準(zhǔn)新增了一組 HTTP 首部字段,允許服務(wù)器聲明哪些 源站通過(guò)瀏覽器有權(quán)限訪問(wèn)哪些資源
1.2 CORS 怎么工作的?
CORS 是通過(guò)設(shè)置一個(gè)響應(yīng)頭來(lái)告訴瀏覽器,該請(qǐng)求允許跨域,瀏覽器收到該響應(yīng) 以后就會(huì)對(duì)響應(yīng)放行。
1.3 CORS 的使用?

ajaxDemo.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CORS</title>
<style>
#result {
width: 200px;
height: 100px;
border: solid 1px #90b;
}
</style>
</head>
<body>
<button>發(fā)送請(qǐng)求</button>
<div id="result"></div>
<script>
const btn = document.querySelector('button');
btn.onclick = function () {
//1. 創(chuàng)建對(duì)象
const x = new XMLHttpRequest();
//2. 初始化設(shè)置
x.open("GET", "http://127.0.0.1:8080/cors-server");
//3. 發(fā)送
x.send();
//4. 綁定事件
x.onreadystatechange = function () {
if (x.readyState === 4) {
if (x.status >= 200 && x.status < 300) {
document.getElementById('result').innerText = x.response;
}
}
}
}
</script>
</body>
</html>

server.js
//1. 引入express
const express = require('express');
//2. 創(chuàng)建應(yīng)用對(duì)象
const app = express();
//3. 創(chuàng)建路由規(guī)則
// request 是對(duì)請(qǐng)求報(bào)文的封裝
// response 是對(duì)響應(yīng)報(bào)文的封裝
app.all('/cors-server', (request, response)=>{
//設(shè)置響應(yīng)頭
response.setHeader("Access-Control-Allow-Origin", "*");// 允許請(qǐng)求所有跨域 *
// response.setHeader("Access-Control-Allow-Origin", "http://127.0.0.1:5500"); // 允許指定請(qǐng)求跨域
// response.setHeader("Access-Control-Allow-Headers", '*');// 允許自定義請(qǐng)求頭標(biāo)簽
// response.setHeader("Access-Control-Allow-Method", '*');// 允許所有的請(qǐng)求跨域 *
// response.setHeader("Access-Control-Allow-Method", 'get');// 允許get請(qǐng)求跨域
response.send('hello CORS');
});
//4. 監(jiān)聽(tīng)端口啟動(dòng)服務(wù)
app.listen(8080, () => {
console.log("服務(wù)已經(jīng)啟動(dòng), 8080 端口監(jiān)聽(tīng)中....");
});
啟動(dòng)服務(wù) nodemon server.js

運(yùn)行結(jié)果:
到此這篇關(guān)于Ajax解決跨域之設(shè)置CORS響應(yīng)頭實(shí)現(xiàn)跨域案例詳解的文章就介紹到這了,更多相關(guān)Ajax解決跨域內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
script標(biāo)簽的 charset 屬性使用說(shuō)明
如果外部文件中的字符編碼與主文件中的編碼方式不同,就要用到 charset 屬性。2010-12-12
javascript判斷回文數(shù)詳解及實(shí)現(xiàn)代碼
這篇文章主要介紹了javascript判斷回文數(shù)詳解及實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2017-02-02
深入理解JavaScript系列(43):設(shè)計(jì)模式之狀態(tài)模式詳解
這篇文章主要介紹了深入理解JavaScript系列(43):設(shè)計(jì)模式之狀態(tài)模式詳解,狀態(tài)模式(State)允許一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變的時(shí)候改變它的行為,對(duì)象看起來(lái)似乎修改了它的類,需要的朋友可以參考下2015-03-03
Javascript基礎(chǔ)教程之for循環(huán)
這篇文章主要介紹了Javascript基礎(chǔ)教程之for循環(huán)的相關(guān)資料以及示例分享,需要的朋友可以參考下2015-01-01
JavaScript高級(jí)程序設(shè)計(jì)(第3版)學(xué)習(xí)筆記12 js正則表達(dá)式
前面在分析PhoneGap源碼的時(shí)候,曾經(jīng)總結(jié)過(guò)一次正則表達(dá)式的用法,為了不同系列文章的完整性,這里將那里的總結(jié)遷移過(guò)來(lái)2012-10-10
IE不支持getElementsByClassName最終完美解決方案
目前可以這么解決,判斷瀏覽器支不支持這個(gè)方法,如果支持就不管;如果不支持,就在document對(duì)象里加入getElementsByClassName這個(gè)方法,按興趣的朋友可以了解下2012-12-12

