簡體   English   中英

使用jQuery.ajax請求和jsonp進行基本身份驗證

[英]Basic Authentication with jQuery.ajax request and jsonp

我有一些本地html / js文件,我想通過https調用一些遠程服務器,並最終使用基本身份驗證的請求。

我遇到兩個問題。 首先,如果我沒有為dataType指定'jsonp',jQuery.ajax()請求將返回錯誤:

訪問受限制的URI拒絕代碼:1012

我的請求是否被視為跨域,因為我的主要工作文件存儲在本地,但是從其他地方的服務器檢索數據?

很好,我更新了呼叫,現在它看起來像:

$.ajax({ 
     url: myServerUrl,
     type: "GET", 
     dataType: "jsonp", // considered a cross domain Ajax request if not specified
     username: myUsername,
     password: myPassword,

     success: function(result)
     {
        // success handling
     },
     error: function(req, status, errThrown){
         // error handling
     }
})

因為我需要使用基本身份驗證,我傳遞用戶名/密碼,但如果我監視請求,我看不到它被設置,此外,服務器發送錯誤響應,因為它沒有預期的信息。

另外,因為我有jsonp設置,所以不會調用beforeSend

如何使用基本身份驗證為此請求傳遞憑據?

簡短版本是你不能這樣做的。 您的懷疑是正確的,因為您是本地的,並且這些文件是遠程的,您無法訪問它們,您被同源策略阻止。 解決這個問題的方法是JSONP ,但這似乎並不適用於你的情況......

JSONP的工作方式不同,它是通過<script>標記包含的GET請求來獲取文件,因此您不會發送特殊標題或任何內容。

您需要通過您所在的服務器(運行此腳本的域)或其他代理選項代理請求,但主要出於安全原因阻止從客戶端到另一個域。

嘗試使用http:// user:password @ restservice 這模仿了基本身份驗證請求。

我想你必須添加某種服務器代理。 JSONP只是使用腳本標記的一種特殊方式。 因此,它不允許設置任意標頭。 當然,你不能做一個跨性別的XHR。

暫無
暫無

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

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