解決 jquery使用ajax請求發生跨域問題的辦法
解決 jquery使用ajax請求發生跨域問題的辦法
問題描述
我在使用jquery的ajax請求後臺資料的時候發生了跨域的問題,在網上查了很多辦法都是說新增這個 dataType: ‘jsonp’,但是我使用過後沒有效果,最後我用Node寫了一個伺服器做代理解決了這個問題。
解決步驟
1.編寫node伺服器
關於node我就不做介紹了,直接看程式碼吧(寫了一個非常簡單的例子),程式碼裡面引入的有些包是不需要的請自行刪除。
//引入express框架
const express = require('express');
//路徑處理模組
const path = require('path');
const formidable = require('formidable')
const fields = require('fields')
const bodyParser = require('body-parser')
const request = require('request');
const { json } = require('body-parser');
//建立web伺服器
const app = express();
//處理引數
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({
extended: false
}))
//靜態資源訪問服務功能
app.use(express.static(path.join(__dirname, 'public')));
//攔截所有請求
/* app.use((req, res, next) => {
//1.允許哪些客戶端訪問我
// *代表允許所有的客戶端訪問我
//注意:如果跨域請求中涉及到cookie資訊傳遞,值不可以為*號
res.header('Access-Control-Allow-Origin', 'http://localhost:3000')
// 2.允許客戶端使用哪些請求方法訪問我
res.header('Access-Control-Allow-Methods', 'get, post')
//允許客戶端傳送跨域請求時攜帶cookie資訊|
res.header('Access-Control-Allow-Credentials', true);
next();
});
*/
//設定允許跨域訪問該服務
app.all('*', function (req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
// 2.允許客戶端使用哪些請求方法訪問我
res.header('Access-Control-Allow-Methods', 'PUT,GET,POST,DELETE,OPTIONS');
res.header('Access-Control-Allow-Headers', 'X-Requested-With');
//這兩步不能這麼寫,不然會形成覆蓋,導致json型別的傳參傳遞報錯
// res.header('Access-Control-Allow-Headers', 'Content-Type');
// res.header('Access-Control-Allow-Headers', 'mytoken');
res.header('Access-Control-Allow-Headers', ['mytoken', 'Content-Type']);
next();
})
//路由
app.get('/data', (req, res) => {
//請把url的地址換成你需要請求資料的地址
request({ url: 'http://*******************' }, function (error, response, body) {
// console.log(response)
//把請求成功後的資料傳送給客戶端
res.send(body);
})
});
//監聽埠
app.listen(3000);
//控制檯提示輸出
console.log('伺服器啟動成功');
使用這個方法的思路是利用node伺服器做中間人,讓node伺服器幫我們去請求資料,在成功請求到資料以後傳送給客戶端。
2.編寫客戶端請求示例
寫個簡單的例子
$.ajax({
url: 'http://localhost:3000/data',
type: 'get',
success: function (data) {
console.log(data);
}
})
通過上面的ajax請求就可以拿到node伺服器發給客戶端的資料了。
總結
寫部落格記錄自己在學習中遇到的問題以及解決方法我覺得這是很快樂的事情,以後回過頭看看以前自己踩過的坑看著自己一點一點進步。
希望可以幫到大家,如果我寫的地方有錯誤或者你們有更好的建議請留言或私信。我一會及時改正過來。謝謝大家。
相關文章
- js ajax請求封裝及解決node請求跨域問題JS封裝跨域
- 跨域請求之jQuery的ajax jsonp的使用解惑跨域jQueryJSON
- csrf解決Ajax請求跨站問題
- 跨域問題解決辦法跨域
- Ajax 跨域請求 Access to XMLHttpRequest 解決方案跨域XMLHTTP
- 前端http請求跨域問題解決前端HTTP跨域
- ajax跨域請求之CORS的使用跨域CORS
- spring mvc解決ajax跨域問題SpringMVC跨域
- 解決ajax跨域問題的多種方法跨域
- Vue 跨域問題解決辦法 Vue 配置防止跨域 nginx 重定向防止跨域Vue跨域Nginx
- web 跨域請求安全問題Web跨域
- 記錄一次解決服務請求的跨域問題跨域
- AJAX 跨域問題跨域
- 解決 ajax 跨域跨域
- Ajax+SpringMVC實現跨域請求SpringMVC跨域
- options 請求跨域問題處理跨域
- SpringBoot解決跨域請求攔截Spring Boot跨域
- 使用Nginx來解決跨域的問題Nginx跨域
- 跨域請求中常見的幾個問題跨域
- java解決請求跨域的兩種方法Java跨域
- 解決跨域問題跨域
- React如何解決fetch跨域請求時session失效問題React跨域Session
- 【JavaScript】通過封裝自己的JSONP解決瀏覽器的跨域問題(Ajax跨域)JavaScript封裝JSON瀏覽器跨域
- 搞懂:前端跨域問題JS解決跨域問題VUE代理解決跨域問題原理前端跨域JSVue
- JQuery中ajax的使用與快取問題的解決方法jQuery快取
- AJAX 跨域請求解跨域
- jQuery裡如何使用ajax傳送請求jQuery
- Python全棧Web(AjaxJQuery-AJAX跨域請求)Python全棧WebjQuery跨域
- 搞定所有的跨域請求問題: jsonp & CORS跨域JSONCORS
- .net webapi 處理前端請求跨域問題WebAPI前端跨域
- 關於vue請求laravel介面跨域問題VueLaravel跨域
- Nuxt使用axios跨域問題解決方法UXiOS跨域
- WebSocket跨域問題解決Web跨域
- Java解決跨域問題Java跨域
- Flask解決跨域問題Flask跨域
- CROS 解決跨域問題ROS跨域
- SignalR跨域問題解決SignalR跨域
- cors解決跨域問題CORS跨域