2015-11-09 63 views
0

asp.net mvc應用程序中的默認策略是什麼? CORS和X-Frame-Options如何關聯?MVC中的同源策略/ CORS 5

如果我在端口上創建一個新的MVC Web應用程序(託管在IIS中) 21232,我將一個iframe添加到索引視圖,其源設置爲我的本地IIS,例如

<iframe src="http://localhost/iisstart.htm" width="800" height="100"/> 

這工作正常(即使在不同的Web應用程序端口上)。

如果我現在將iframe源更改爲完全外部的內容,例如

<iframe src="http://www.google.com" width="800" height="100"/> 

現在顯示一個空的iframe。如果我看在Chrome瀏覽器開發工具(瀏覽器在這兩個例子中使用),我看到一個錯誤在控制檯

拒絕在該框架中顯示「https://www.google.co.uk」,因爲它設置「X-框架 - 選項」到「SAMEORIGIN 」。

  1. 爲什麼第一個URL時的工作地址是不同的端口託管網頁上?
  2. X-Frame-Options與CORS的關係如何?我嘗試添加以下到我的web.config(見參考文獻enable cors in IIS

<add name="Access-Control-Allow-Origin" value="*" />

這沒有什麼區別。看來,如果我需要添加以下到的Application_Start中的global.asax.cs

AntiForgeryConfig.SuppressXFrameOptionsHeader = true; 

是X框 - 選項專門IFRAME有關?

回答

0

我想你已經把X-Frame-Options響應頭和CORS混淆起來了。

X-Frames-Options響應標頭用於指示是否允許瀏覽器加載中的特定頁面。另一方面,CORS用於確定是否允許跨域使用XMLHttpRequest(XHR)(以及其他一些內容)。

所以是的,X-Frames-Options僅僅是相關的。

您能夠從http://localhost/iisstart.htm加載您的網頁應用程序運行在端口21232的原因是因爲在響應中沒有X-Frame-Options響應頭。您將無法使用http://www.google.com,因爲它的X-Frames-Options設置爲SAMEORIGIN。這意味着除非您的域名是google.com,否則您將無法將其加載到之內。

您添加的標頭Access-Control-Allow-Origin與無關。您無法在頁面中加載http://www.google.com

+0

好的,謝謝,我明白了,因此SuppressXFrameOptionsHeader只是爲了讓我的網站能夠在iframe中託管。感謝您的澄清。 – obaylis

+0

認爲一個混淆之處是我想要訪問/編輯JavaScript中的iframe內容。按照http://stackoverflow.com/questions/2689984/javascript-and-same-origin-iframes。似乎在這裏你需要遵守相同的原產地政策。 – obaylis