[英]Cross-domain data access in JavaScript
我們在我們的網絡上托管了一個ASP.Net應用程序,並向特定客戶端公開。 該客戶希望能夠將自己服務器中的數據導入我們的應用程序。 使用HTTP請求檢索數據並進行CSV格式化。 問題是他們不想將他們的服務器暴露給我們的網絡,並且要求在客戶端進行導入(所有客戶端都來自與他們的服務器相同的網絡)。
所以,需要做的是:
當兩個服務器位於同一個域時,這不是一個挑戰:一個簡單的隱藏iframe或類似的東西可以解決這個問題,但在這里我得到的是跨域“訪問被拒絕”錯誤。 他們還拒絕更改數據格式以返回JSON或XML格式的數據。
到目前為止我嘗試和學到的是:
在放棄之前還有什么我可以嘗試的,並且說如果不將他們的服務器暴露給我們的應用程序,改變他們的數據格式或改變他們的瀏覽器安全設置是不可能的嗎? (順便說一句,DNS技巧不是一個選項)。
對於您的客戶來說可能為時已晚,但由於您可以控制這兩個域,因此您可以嘗試使用EasyXDM 。 它是一個包含跨瀏覽器怪癖的庫,它提供了一個易於使用的API,用於使用該瀏覽器的最佳可用機制在不同域之間的客戶端腳本中進行通信(例如,如果可用,則為postMessage,否則為其他機制)。
警告:您需要控制兩個域才能使其工作(“控制”意味着您可以在兩個域上放置靜態文件)。 但是您不需要任何服務器端代碼更改。
您的客戶端是您的應用程序提供的JavaScript,對吧?
然后,您的客戶端只能向您的applciation發送請求(跨站點腳本防護),您看到的錯誤是什么?
假設是,那么解決方案是讓您的應用程序提供“代理”服務。 您的瀏覽器代碼可以向您的服務器詢問一些數據。 您的服務器可以自由地向它喜歡的任何服務器發出Http請求(沒有瀏覽器對象)。 因此,您可以實現一些小服務來獲取cvs數據並將其呈現給您的應用程序。
如果您的客戶正在使用它,您甚至可以選擇將該CSV數據映射到JSON。
你不能只在他們的服務器上托管JS文件嗎? 這應該允許該文件中的腳本將ajax調用回服務器。
你可以試試閃光燈。 如果你將這個yourdomain.com/crossdomain.xml放在你的root中,你就可以從mysite.com發出跨域請求。
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="www.mysite.com" to-ports="25" />
</cross-domain-policy>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.