2013-08-23 98 views
2

我無法協調來自StackOverflow和其他來源的有關使用跨子域調用的一些衝突信息。考慮共享一個公共域這兩個獨立的網站:跨子域處理CORS和Cookie範圍

  • 網站#1:www.myDomain.com
  • 網站#2:sub.myDomain.com

要求:

  1. 網站#1必須能通過sub.myDomain.com/handler.ashx對站點#2執行AJAX調用。
  2. 網站#1和網站#2必須能夠讀取彼此的Cookie。

這些要求使我下面的問題:

  1. 是否位於sub.myDomain.com/handler.ashx處理程序代碼需要改變它的響應頭,讓CORS?我知道,我可以寫一個電話這樣的:

    resp.Headers.Add("Access-Control-Allow-Origin","*"); 
    

    ...但是從我讀,這將處理程序暴露所有域。我只是想限制那些來自*.myDomain.com的呼叫。如果我根本不包含CORS頭文件呢?什麼是默認行爲?

  2. 網站#1和/或網站#2是否需要調整HttpCookie的域屬性,以便兩個網站可以讀取彼此的Cookie?

    如果我根本不觸碰域屬性,該怎麼辦?什麼是默認行爲?一些論壇的迴應表明,Cookie範圍將侷限於子域,而另一些人則認爲整個域名都在範圍內(這是我想要的),在這種情況下,我不需要採取任何行動。

回答

2

如果爲屬性「Access-Control-Allow-Origin」添加「*」,則允許所有站點調用您的處理函數。

在www.myDomain.com處理響應

你必須添加這樣的事情

context.Response.AppendHeader("Access-Control-Allow-Origin", "sub.myDomain.com"); 

這樣,僅sub.myDomain.con可以從www.myDomain.com