如果您需要預檢請求,例如所以你可以發送認證請求,你無法設置Access-Control-Allow-Origin: *
。它必須是特定的Origin
域。
如果您使用除默認值以外的任何內容,還必須設置Access-Control-Allow-Methods
和Access-Control-Allow-Headers
響應標頭。 (注意這些限制只是CORS本身的工作原理 - 這就是它的定義。)
所以,這是不夠的,只是扔在[EnableCors]
屬性,必須將值設置爲參數:
[EnableCors(origins: "https://www.olliejones.com", headers: "X-Custom-Header", methods: "PUT", SupportsCredentials = true)]
或者,如果你想手動和明確的做的事情:
HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Origin", "https://www.olliejones.com");
HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Headers", "X-Custom-Header");
HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Methods", "PUT");
HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Credentials", "true");
最後一件事 - 開始時您必須致電.EnableCors()
。在例如MVC或WebAPI,你可以在HttpConfiguration上調用它,當註冊配置等 - 但我不知道它如何與WebForms一起工作。
WebForms積極地使修改標題變得困難,例如,只要有東西發送給用戶,您就無法更改標題。以下是我之前使用過的一種黑客技術:http://stackoverflow.com/questions/4091157/httpmodule-to-add-headers-to-request – MatthewMartin
另一種使用webconfig的方法http://stackoverflow.com/questions/2922178/is-it-it-it-it-add-response-http-headers-in-web-config – MatthewMartin
另一種更現代的使用owin中間件來操縱標題的方法:http://www.mikesdotnetting.com/article/269/asp-net-5-middleware-or-where-has-my-httpmodule-gone – MatthewMartin