2014-06-07 83 views
3

我試圖使用Domino通過REST通過跨域請求進行溝通,但我遇到的一個問題。我已經設置了IP地址,本地主機和作爲主機名稱列出的服務器名稱的Internet站點文檔。互聯網網站正在作爲我在該網站上設置的重定向規則工作。我也已經設置以下配置的網站規則:如何在Lotus Domino上設置CORS?

Web Site Rule

現在,當我試圖通過HTML GET請求,我得到這個錯誤打rest.xsp頁:

XMLHttpRequest cannot load 
http://192.168.1.104/testing/restService.nsf/rest.xsp/testRest?reqType=UserCanAc…TOP&startId=BA4241EC74912860ED60FD1123473BF7&returnType=ARRAYOBJECTS. 
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 
'http://127.0.0.1:8020' is therefore not allowed access. 

這裏是請求頭:

Accept:application/json, text/javascript, */*; q=0.01 
Cache-Control:max-age=0 
Origin:http://127.0.0.1:8020 
Referer:http://127.0.0.1:8020/Backbone%20Playground/index.html 
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36 

我不能爲我的生命搞清楚什麼我已經錯過了。有人能指引我朝着正確的方向嗎?

+0

這是否幫助? http://www.markbarton.com/?p=344 –

+0

這實際上是我最初設置的頁面,然後通過Paul Whithers發現的另一篇文章進行驗證(我認爲,不確定)。 – keithstric

+0

檢查GET是HTTP 1.1而不是1.0。 –

回答

2

CORS標題是響應的一部分,因此您需要檢查您的頁面是否獲得了CORS 響應標題。在任何情況下,對於一個XPage你可以到servlet response object直接訪問並設置標題在您的XPage:

var externalContext = facesContext.getExternalContext(); 
    var response = externalContext.getResponse(); 
    response.setHeader("Access-Control-Allow-Origin","*"); 

您想更換*有一點更嚴格的設置。 Cors doesn't work in all browsers,所以你也需要檢查結果。

+1

我的經驗,FWIW:截至9.0.1,使用時控制,這種技術似乎並沒有工作。我也無法找到「響應標頭」屬性,也沒有將標題添加爲元數據資源。 –

+0

您需要將其添加到代碼中。休息控制是它自己的URL。添加到頁面的元數據不起作用。 – stwissel

+0

你是什麼意思,「在代碼中添加它」?如果您的意思是上述答案中顯示的SSJS,我無法使其工作。如果你的意思是別的,你能否進一步解釋? 如果我無法得到這個工作,我會切換到一個「簡單」的XAgent設計。 –

2

我覺得你的配置是很好,你可以test it using CURL。您應該能夠通過檢查與您正在使用的URL不同的任何URL來查看自定義標題。

的問題,也許,是由於中使用XPages擴展庫控制,REST服務,您正在使用。我認爲「HTTP響應頭」不適用於此控件。我在多米諾8.5.3

+0

...我開始認爲它有意義... –

0

我知道這是有點老線程測試,但因爲它沒有被回答有一些消息,我認爲這是值得扔在我自己的調查結果。

  1. Mark Leusink塌陷到這一點,並發現有必要也接受返回碼204 GET和201也可用於任何寫入(PUT/POST)操作
  2. 現在有一種新的可能性,包括第四響應標題按NOTES.INI參數的手段所有的網站規則「HTTPAdditionalRespHeader =」,看到這個technote

不過,我也掙扎在目前完成CORS的任務,因爲Domino始終以401到響應預檢(這似乎很清楚,因爲它未經認證,至少在Chro內我)。