ASP 中的访问控制允许来源

Posted

技术标签:

【中文标题】ASP 中的访问控制允许来源【英文标题】:Access-Control-Allow-Origin in ASP 【发布时间】:2015-04-28 11:37:17 【问题描述】:

我有一个“DOM”文件,它调用另一个域上的 ASP 文件(不是 .NET)。 如何在 ASP 中编写Access-Control-Allow-OriginAccess-Control-Allow-Origin 用于“php”,但我找不到 ASP 的语法,我只能找到 ASP.NET 的语法

当我使用 Internet Explorer 时它工作正常,但在 Chrome 中它说

“请求的资源上不存在Access-Control-Allow-Origin 标头。因此不允许访问源'http://SOURCEDOMAIN'。”

【问题讨论】:

这是一个 HTTP 标头,用于在 Classic ASP 中指定它们使用 Response.AddHeader "Access-Control-Allow-Origin", "http://SOURCEDOMAIN" 我不使用标题,因为页面只是在后台加载并通过 response.write 将结果返回到另一个域上的页面。如果我添加 等,处理我需要的结果将更加困难。 html <head> 标签不是一回事。服务器在请求页面时添加 HTTP 标头,the example I give below 是应添加到您尝试在后台访问的经典 ASP 的代码,这将启用 CORS 并停止 Chrome 阻止内容。 【参考方案1】:

将 HTTP 标头添加到经典 ASP 中是一个简单的过程,Response 对象有一个专门用于此目的的方法,允许您将所需的任何自定义标头添加到将发送到浏览器的 HTTP 标头中。请求页面。

方法名为AddHeader()这里是一个例子;

<%
Call Response.AddHeader("Access-Control-Allow-Origin", "http://SOURCEDOMAIN")
%>

有用的链接

W3 - Cross-Origin Resource Sharing Cross-domain Ajax with Cross-Origin Resource Sharing Using CORS

【讨论】:

即使我在顶部 chrome 中添加该行仍然显示“请求的资源上不存在'Access-Control-Allow-Origin'标头。” @Alan 该代码应作为经典 ASP 服务器端代码 (&lt;% %&gt;) 添加到您尝试在后台调用的页面中。标头应包含尝试在后台访问经典 ASP 页面的页面的匹配 URL 域。如果 Chrome 显示没有标头,那么您要么将代码添加到错误的页面,要么某些代理在标头到达客户端浏览器之前删除了标头。 我有一个 ASP.NET Web 服务,并且在很多地方都看到了这个指令,包括那个 CORS 站点,但仍然不知道“在我试图调用的页面中”的位置。我们在谈论 .asmx 文件吗?谁能详细说明一下? @ThePartyTurtle 不是真的这个问题是关于与 ASP.Net 完全不同的经典 ASP 啊,谢谢你的澄清。不确定“经典 ASP”是一个具体名称,而不仅仅是人们如何称呼 ASP。【参考方案2】:

我不知道这些年来浏览器的安全性是否有所提高,但为了使其正常工作,我必须添加标题:Access-Control-Allow-Credentials

所以这是对我有用的解决方案:

<%
Call Response.AddHeader("Access-Control-Allow-Origin", "http://SOURCEDOMAIN")
Call Response.AddHeader("Access-Control-Allow-Credentials", "true")
%>

【讨论】:

以上是关于ASP 中的访问控制允许来源的主要内容,如果未能解决你的问题,请参考以下文章

Safari 中的访问控制允许来源

htaccess 中的访问控制允许来源

Cors - Firebase 云功能中的访问控制允许来源错误

Angular 2 http服务中的访问控制允许来源问题

科尔多瓦没有访问控制允许来源

尝试从 Web 应用程序获取数据时出现 Cors 错误(没有“访问控制允许来源”/它没有 HTTP ok 状态。)