【PHP】Ajax跨域解決方案 、jsonp、cors


參考文章:

1、https://blog.csdn.net/u014727260/article/details/72793459 (后台java,實際上差不多)

2、

如何解決ajax跨域傳輸 數據的問題

    • JSONP 
        JSONP是JSON with Padding的略稱。它是一個非官方的協議,它允許在服務器端集成Script tags返回至客戶端,通過javascript callback的形式實現跨域訪問(這僅僅是JSONP簡單的實現形式)。關於jsonp的使用方式,可以參考http://blog.csdn.net/alen1985/article/details/6365394,優缺點可以參考http://blog.csdn.net/z69183787/article/details/19191385  
    • 添加響應頭,允許跨域 
        addHeader(‘Access-Control-Allow-Origin:*’);//允許所有來源訪問 
        addHeader(‘Access-Control-Allow-Method:POST,GET’);//允許訪問的方式

 

1、JONSP:jquery的ajax 發送jsonp 請求(還可帶上callback指定回調函數,不寫默認callback)

 

 

 

2、CORS:跨站資源共享(簡單請求+復雜請求==》application/json; charset=utf-8 , 則屬於復雜請求)

,我們可以在服務器端PHP示例的方法里面,設置以下參數:

 
         
<?php
header("Access-Control-Allow-Origin: *");   //全域名
header("Access-Control-Allow-Credentials: true");   //是否可以攜帶cookie

header("Access-Control-Allow-Methods: POST,GET,PUT,OPTIONS,DELETE"); //允許請求方式
header("Access-Control-Allow-Headers: X-Custom-Header");   //允許請求字段,由客戶端決定
header("Content-Type: text/html; charset=utf-8"); //返回數據類型( text/html; charset=utf-8、 application/json; charset=utf-8 )
//header("Access-Control-Allow-Origin: //www.jb51.net");//指定域名訪問 //CORS跨域支持post、get、put、options、delete方式,而jsonp跨域只支持get方式

>?

Javascript 代碼直接使用 Ajax 即可:

$.ajax({
        url: aURL,
        type: aMethod,
        data: aParams,
        dataType: 'json',
        timeout: 1000 * 120,
        beforeSend: function (xhr) {
            var token = $.cookie('token');
            if (token) {
                xhr.setRequestHeader('Authorization', 'Bearer ' + token);
            }
        },
        success: function (response) {
            if (response.code == 200) {
                typeof aSuccess == 'function' && aSuccess(response.data);
            } else {
                typeof aError == 'function' && aError(response.message);
            }
        },
        error: function(xhr, type){
            typeof aError == 'function' && aError(xhr.status + ' '  + xhr.statusText);
        }
    });

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM