簡體   English   中英

跨域ajax請求

[英]Cross domain ajax request

我想從跨域 URL 獲取 HTML 響應頁面。

為此,我使用 ajax 請求,

 $.ajax({
            type: 'GET',
            url: "http://wcidevapps.com/salescentral/idisk/0001000383/iDisk",
            dataType: "json",
            success: function (response) {
                $(response).find('li a').each(function () {
                    listHref.push($(this).attr('href'));
                });

            }
        });

但是在請求之后它不會回復任何結果。

<script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
  <script type="text/javascript">
    function NameAFunctionName() {
        $.ajax({
          url: 'http://wcidevapps.com/salescentral/idisk/0001000383/iDisk',
          type: 'GET',
          dataType: 'json',
          headers: {
            //WRITE IF THEIR HAVE SOME HEADER REQUEST OR DATA
          },
          crossDomain: true,
          success: function (data, textStatus, xhr) {
            console.log(data);
          },
          error: function (xhr, textStatus, errorThrown) {
            console.log(errorThrown);
          }
        });
    }   
</script>

檢查文檔: http : //api.jquery.com/jQuery.ajax/

crossDomain (默認:同域請求為假,跨域請求為真)

類型:布爾型

如果您希望在同一個域上強制執行 crossDomain 請求(例如 JSONP),請將 crossDomain 的值設置為 true。 例如,這允許服務器端重定向到另一個域。 (版本添加:1.5)

我懷疑您看到這個問題是因為您請求的頁面沒有響應 json(p) 響應,而是響應重定向到:

http://wcidevapps.com/salescentral/idisk/0001000383/iDisk/

(注意尾部斜線)

然后返回內容類型:

Content-Type:text/html;charset=ISO-8859-1

編輯:如果您打算跨域檢索上述站點的數據,為了通過您的腳本進一步解析,我建議您選擇以下之一:

假設 1控制着服務器“ http://wcidevapps.com ”上的頁面

在這種情況下,您有兩個選擇:將 CORS 標頭“Access-Control-Allow-Origin: *”添加到響應(並使用 dataType:"html" 配置客戶端 ajax() 調用),或者創建一個特殊的 JSON( P) 提供與 JSON 相同數據的頁面(帶填充)(並像在 OP 中一樣配置客戶端 ajax() 調用,使用 dataType:"jsonp")

假設2:不是在服務器上的網頁控制http://wcidevapps.com

在這種情況下,我能想到的唯一選擇是在您控制的站點上設置代理。 讓該代理將請求/響應“代理”到“ http://wcidevapps.com ”,但將 CORS 標頭“Access-Control-Allow-Origin: *”添加到響應中(並配置客戶端 ajax() 調用數據類型:“html”)

如果您使用的是 asp.net web 服務,那么您需要將其添加到 webconfig 文件中;

<system.webServer>
    <directoryBrowse enabled="true"/>
<httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
    <add name="Access-Control-Allow-Headers" value="Content-Type" />
  </customHeaders>
</httpProtocol>
</system.webServer>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM