Asp.net core cloudflare ssl 使用 unobtrusive-ajax 阻止混合内容
Asp.net core cloudflare ssl Blocked Mixed content using unobtrusive-ajax
我最近建立了一个使用 cloudflare free ssl 的网站。当使用 ajax 调用分页时,我得到一个混合内容错误,我假设是因为它仍然在某个时候通过 http 传输!?我尝试在此处使用 https 重定向说明:https://docs.microsoft.com/en-us/aspnet/core/security/enforcing-ssl
但这只是在一个循环中结束,给出了太多的重定向错误。
这是与混合内容有关的特定错误:
Mixed Content: The page at
'https://www.andysmobilearchery.co.uk/events/' was loaded over HTTPS,
but requested an insecure XMLHttpRequest endpoint
'http://www.andysmobilearchery.co.uk/events/index/?page=2&x-requested-with=xmlhttprequest&=1502287619453'.
This request has been blocked; the content must be served over HTTPS.
是否有解决此问题的方法,或者我是否必须删除 ajax 函数?
感谢任何帮助!
@if (Model.Pager.EndPage > 1)
{
<ul class="pagination">
@if (Model.Pager.CurrentPage > 1)
{
<li>
<a asp-controller="Events" asp-action="_Index" data-ajax="true" data-ajax-mode="replace" data-ajax-update="#paged-content" asp-route-page="1" data-ajax-method="GET" asp-route-dfrom="@ViewBag.dfrom" asp-route-dto="@ViewBag.dto" asp-route-search="@ViewBag.search">First</a>
</li>
<li>
<a asp-controller="Events" asp-action="_Index" data-ajax="true" data-ajax-mode="replace" data-ajax-update="#paged-content" data-ajax-method="GET" asp-route-page="@(Model.Pager.CurrentPage - 1)" asp-route-dfrom="@ViewBag.dfrom" asp-route-dto="@ViewBag.dto" asp-route-search="@ViewBag.search">Previous</a>
</li>
}
@for (var page = Model.Pager.StartPage; page <= Model.Pager.EndPage; page++)
{
<li class="@(page == Model.Pager.CurrentPage ? "active" : "")">
<a asp-controller="Events"asp-action="_Index" data-ajax="true" data-ajax-mode="replace" data-ajax-update="#paged-content" data-ajax-method="GET" asp-route-page="@page" asp-route-dfrom="@ViewBag.dfrom" asp-route-dto="@ViewBag.dto" asp-route-search="@ViewBag.search">@page</a>
</li>}
@if (Model.Pager.CurrentPage < Model.Pager.TotalPages)
{
<li>
<a asp-controller="Events" asp-action="_Index" data-ajax="true" data-ajax-mode="replace" data-ajax-update="#paged-content" data-ajax-method="GET" asp-route-page="@(Model.Pager.CurrentPage + 1)" asp-route-dfrom="@ViewBag.dfrom" asp-route-dto="@ViewBag.dto" asp-route-search="@ViewBag.search">Next</a>
</li>
<li>
<a asp-controller="Events" asp-action="_Index" data-ajax="true" data-ajax-mode="replace" data-ajax-update="#paged-content" data-ajax-method="GET" asp-route-page="@(Model.Pager.TotalPages)" asp-route-dfrom="@ViewBag.dfrom" asp-route-dto="@ViewBag.dto" asp-route-search="@ViewBag.search">Last</a>
</li>
}
</ul>
}
我现在注意到我实施此功能的其他网站工作正常(另外 3 个!),我正在使用 asp.net 样板文件,如果我在事件页面禁用此功能,它会在 url 中添加尾部斜线有效,但我的评论页面停止...我感到困惑哈哈
所以我找到了答案,有点。
在我的应用程序中,我有添加尾部斜杠的路由选项:
.AddRouting(
options =>
{
// Improve SEO by stopping duplicate URL's due to case differences or trailing slashes.
// See http://googlewebmastercentral.blogspot.co.uk/2010/04/to-slash-or-not-to-slash.html
// All generated URL's should append a trailing slash.
options.AppendTrailingSlash = true;
// All generated URL's should be lower-case.
options.LowercaseUrls = true;
})
我发现禁用此功能有效,但我并不满意,因为我的其他网站上没有出现此问题。最后,我从一个工作站点复制了 startup.cs,这解决了这个问题,我能找到的唯一区别是损坏的站点使用部分 class 进行启动,并在使在启动的其余部分,唯一的区别是 cors 方法,我不需要 cors,所以我不知道它为什么在那里,但仍然不应该破坏它。自从我让它工作以来,它必须在一段时间内保持神秘。我要做的是稍后一点一点地重新构建应用程序;如果我记得的话,我会在这里更新任何发现。
我最近建立了一个使用 cloudflare free ssl 的网站。当使用 ajax 调用分页时,我得到一个混合内容错误,我假设是因为它仍然在某个时候通过 http 传输!?我尝试在此处使用 https 重定向说明:https://docs.microsoft.com/en-us/aspnet/core/security/enforcing-ssl 但这只是在一个循环中结束,给出了太多的重定向错误。
这是与混合内容有关的特定错误:
Mixed Content: The page at 'https://www.andysmobilearchery.co.uk/events/' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://www.andysmobilearchery.co.uk/events/index/?page=2&x-requested-with=xmlhttprequest&=1502287619453'. This request has been blocked; the content must be served over HTTPS.
是否有解决此问题的方法,或者我是否必须删除 ajax 函数?
感谢任何帮助!
@if (Model.Pager.EndPage > 1)
{
<ul class="pagination">
@if (Model.Pager.CurrentPage > 1)
{
<li>
<a asp-controller="Events" asp-action="_Index" data-ajax="true" data-ajax-mode="replace" data-ajax-update="#paged-content" asp-route-page="1" data-ajax-method="GET" asp-route-dfrom="@ViewBag.dfrom" asp-route-dto="@ViewBag.dto" asp-route-search="@ViewBag.search">First</a>
</li>
<li>
<a asp-controller="Events" asp-action="_Index" data-ajax="true" data-ajax-mode="replace" data-ajax-update="#paged-content" data-ajax-method="GET" asp-route-page="@(Model.Pager.CurrentPage - 1)" asp-route-dfrom="@ViewBag.dfrom" asp-route-dto="@ViewBag.dto" asp-route-search="@ViewBag.search">Previous</a>
</li>
}
@for (var page = Model.Pager.StartPage; page <= Model.Pager.EndPage; page++)
{
<li class="@(page == Model.Pager.CurrentPage ? "active" : "")">
<a asp-controller="Events"asp-action="_Index" data-ajax="true" data-ajax-mode="replace" data-ajax-update="#paged-content" data-ajax-method="GET" asp-route-page="@page" asp-route-dfrom="@ViewBag.dfrom" asp-route-dto="@ViewBag.dto" asp-route-search="@ViewBag.search">@page</a>
</li>}
@if (Model.Pager.CurrentPage < Model.Pager.TotalPages)
{
<li>
<a asp-controller="Events" asp-action="_Index" data-ajax="true" data-ajax-mode="replace" data-ajax-update="#paged-content" data-ajax-method="GET" asp-route-page="@(Model.Pager.CurrentPage + 1)" asp-route-dfrom="@ViewBag.dfrom" asp-route-dto="@ViewBag.dto" asp-route-search="@ViewBag.search">Next</a>
</li>
<li>
<a asp-controller="Events" asp-action="_Index" data-ajax="true" data-ajax-mode="replace" data-ajax-update="#paged-content" data-ajax-method="GET" asp-route-page="@(Model.Pager.TotalPages)" asp-route-dfrom="@ViewBag.dfrom" asp-route-dto="@ViewBag.dto" asp-route-search="@ViewBag.search">Last</a>
</li>
}
</ul>
}
我现在注意到我实施此功能的其他网站工作正常(另外 3 个!),我正在使用 asp.net 样板文件,如果我在事件页面禁用此功能,它会在 url 中添加尾部斜线有效,但我的评论页面停止...我感到困惑哈哈
所以我找到了答案,有点。
在我的应用程序中,我有添加尾部斜杠的路由选项:
.AddRouting(
options =>
{
// Improve SEO by stopping duplicate URL's due to case differences or trailing slashes.
// See http://googlewebmastercentral.blogspot.co.uk/2010/04/to-slash-or-not-to-slash.html
// All generated URL's should append a trailing slash.
options.AppendTrailingSlash = true;
// All generated URL's should be lower-case.
options.LowercaseUrls = true;
})
我发现禁用此功能有效,但我并不满意,因为我的其他网站上没有出现此问题。最后,我从一个工作站点复制了 startup.cs,这解决了这个问题,我能找到的唯一区别是损坏的站点使用部分 class 进行启动,并在使在启动的其余部分,唯一的区别是 cors 方法,我不需要 cors,所以我不知道它为什么在那里,但仍然不应该破坏它。自从我让它工作以来,它必须在一段时间内保持神秘。我要做的是稍后一点一点地重新构建应用程序;如果我记得的话,我会在这里更新任何发现。