ASP 中的访问控制允许来源
Posted
技术标签:
【中文标题】ASP 中的访问控制允许来源【英文标题】:Access-Control-Allow-Origin in ASP 【发布时间】:2015-04-28 11:37:17 【问题描述】:我有一个“DOM”文件,它调用另一个域上的 ASP 文件(不是 .NET)。
如何在 ASP 中编写Access-Control-Allow-Origin
?
Access-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 服务器端代码 (<% %>
) 添加到您尝试在后台调用的页面中。标头应包含尝试在后台访问经典 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 中的访问控制允许来源的主要内容,如果未能解决你的问题,请参考以下文章