2015-10-02 51 views
0

我試圖讓一個現有的.net webforms站點在Cloudfront後面工作,但所有Web表單都打破。WebResource.axd從.net webforms站點丟失在Cloudfront後面

展望更深 - 網站顯示正常,但webforms因爲<script src="/WebResource.axd?[...]">完全丟失而中斷。不是404 - 缺少 - html響應中完全缺少腳本標記。

這似乎是.NET嗅探瀏覽器,併爲該特定瀏覽器+頁面的WebResource.axd自定義生成響應。如果沒有browser match is found。沒有WebResource.axd。

curl http://some-aspnet-webforms-site.example.com/form.aspx似乎也證實了這一點。沒有包含WebResource.axd。

如何讓Cloudfront欺騙最終用戶的瀏覽器,以便WebResource.axd包含在內? (轉發餅乾和查詢字符串似乎並沒有工作,轉發所有頭似乎打破了雲端。)

或者至少,我怎麼強制.net總是注入/插入WebResource.axd,即使嗅探失敗?

回答

0

解決方案是編輯Cloudfront發行版>行爲> .net webforms行爲 - 並轉發標題「白名單」;只輸入用戶代理。當然,轉發cookie和可選的查詢字符串。

enter image description here

好像WebResource編譯purely based on user agent

具體轉發用戶代理修復問題和webforms恢復工作。

轉發Cloudfront中的「所有」標題正在破壞一些東西。我不知道通過轉發所有頭文件在什麼地方中斷了,但它給了通用的AWS「Access Denied」xml錯誤頁面。

+0

剛剛在文檔中發現了這個問題「CloudFront用Amazon CloudFront替換了[User-Agent]標頭字段的值。」:http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/RequestAndResponseBehaviorCustomOrigin.html #請求自定義頁眉行爲 –