2013-10-23 57 views
2

我有以下問題:我需要從我網站上的頁面(https://test.com)發送一些數據到另一個(例如http://anotherdomain.com)。用戶只需將數據輸入到文本框並單擊一個按鈕。此頁面上的腳本將處理單擊事件併發送GET請求(使用jQuery ajax方法)到http://anotherdomain.com使用jsonp跨域請求:從https到http

var enteredValue = $('#MytextBox').val(); 

function jsonpCallbackFunc(data) 
{ 
} 

$.ajax({ 
    url: 'http://anotherdomain.com/qwerty/ajaxpage.php', 
    data: { valuefield: enteredValue }, 
    dataType: 'jsonp', 
    jsonp: 'callback', 
    jsonpCallback: 'jsonpCallbackFunc', 
    success: function (json) { 
      // some code 
    } 
}) 

我使用的是Firefox收到一個錯誤 - 「阻止加載混合活動內容http://anotherdomain.com/qwerty/ajaxpage.php ...」。 IE9和Chrome的情況相同。

問題:我們該如何解決這個問題?我們可以只允許這個腳本僅用於一個站點,或者我們可以使用另一段代碼(而不是jQuery + jsonp)?

非常感謝您的幫助。

P.S.從「http」站點,此代碼按預期工作。

更新: 我們使用另一個「https」-url(https://anotherdomain.com/qwerty/ajaxpage.php)解決了問題。我們曾嘗試過使用它,但它有不可信的證書。現在它工作正常。感謝您的幫助和建議。

+1

在您的服務器上使用腳本來獲取外部JSON數據並在本地返回。 – Blazemonger

+0

此問題似乎與主題無關,因爲它涉及不正確的網址和不受信任的證書。 – Max

回答

1

這也應該需要在服務器被允許,嘗試添加這個,你處理您的請求

<?php header('Access-Control-Allow-Origin: *'); ?> 

希望這可以幫助

+0

你好,謝謝你的回答。我無法訪問http://anotherdomain.com上的代碼。 – Max

+0

請參閱 - http://enable-cors.org/index.html希望這可以爲您提供很多關於跨域請求的理解。 – N20084753

2

出現這種情況是由於CORS。當您向其他域請求時,預檢請求可能發生在ajax調用的條件中。您正在使用jQuery,因此自定義標題將在您的請求中設置。因此,使用

訪問控制請求報頭

訪問控制允許來源

訪問控制允許的方法

請參考cors及其implementation