GVKun编程网logo

Access-Control-Allow-Origin 通配符子域、端口和协议(access control allow origin 配置)

34

在这篇文章中,我们将为您详细介绍Access-Control-Allow-Origin通配符子域、端口和协议的内容,并且讨论关于accesscontrolalloworigin配置的相关问题。此外,我

在这篇文章中,我们将为您详细介绍Access-Control-Allow-Origin 通配符子域、端口和协议的内容,并且讨论关于access control allow origin 配置的相关问题。此外,我们还会涉及一些关于Access-Control-Allow-Origin 不允许 Origin null、Access-Control-Allow-Origin 不允许来源、Access-Control-Allow-Origin 不起作用、Access-Control-Allow-Origin 与 Ajax 跨域的知识,以帮助您更全面地了解这个主题。

本文目录一览:

Access-Control-Allow-Origin 通配符子域、端口和协议(access control allow origin 配置)

Access-Control-Allow-Origin 通配符子域、端口和协议(access control allow origin 配置)

我正在尝试为所有子域、端口和协议启用 CORS。

例如,我希望能够运行从http://sub.mywebsite.com:8080/到https://www.mywebsite.com/的
XHR 请求*

通常,我想启用来自源匹配的请求(并且仅限于):

//*.mywebsite.com:*/*

答案1

小编典典

基于 DaveRandom的回答,我也在玩,发现了一个稍微简单的 Apache
解决方案,它产生相同的结果(Access-Control-Allow-Origin动态设置为当前特定协议 + 域 + 端口),而不使用任何重写规则:

SetEnvIf Origin ^(https?://.+\.mywebsite\.com(?::\d{1,5})?)$   CORS_ALLOW_ORIGIN=$1Header append Access-Control-Allow-Origin  %{CORS_ALLOW_ORIGIN}e   env=CORS_ALLOW_ORIGINHeader merge  Vary "Origin"

就是这样。

那些想要在父域(例如 mywebsite.com)以及其所有子域上启用 CORS 的人可以简单地将第一行中的正则表达式替换为这个:

^(https?://(?:.+\.)?mywebsite\.com(?::\d{1,5})?)$.

注意:为了 规范合规性和正确的缓存行为,始终Vary: Origin为启用 CORS 的资源添加响应标头,即使对于非 CORS
请求和来自不允许来源的请求(参见示例为什么)。

Access-Control-Allow-Origin 不允许 Origin null

Access-Control-Allow-Origin 不允许 Origin null

我制作了一个小的 xslt 文件来创建一个名为 weather.xsl 的 html 输出,代码如下:

<!-- DWXMLSource="http://weather.yahooapis.com/forecastrss?w=38325&u=c" -->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
exclude-result-prefixes="yweather"
xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="/">
    <img src="{/*/*/item/yweather:condition/@text}.jpg"/>
</xsl:template>
</xsl:stylesheet>

我想将 html 输出加载到 html 文件中的 div 中,我尝试使用 jQuery 执行如下操作:

<div id="result">
<script type="text/javascript">
$('#result').load('weather.xsl');
</script>
</div>

但我收到以下错误:Access-Control-Allow-Origin 不允许 Origin null。

我已经阅读了有关向 xslt 添加标头的信息,但我不知道该怎么做,所以任何帮助都将不胜感激,如果无法以这种方式加载 html
输出,请提供有关其他方法的建议这样做会很棒。

Access-Control-Allow-Origin 不允许来源

Access-Control-Allow-Origin 不允许来源

我正在Sencha Touch 2
应用程序(包装在PhoneGapAjax.request中)中创建远程
PHP
服务器。

来自服务器的响应如下:

XMLHttpRequest
无法加载http://nqatalog.negroesquisso.pt/login.php。Access-
Control-Allow- Originhttp://localhost:8888不允许 Origin。

我该如何解决这个问题?

答案1

小编典典

不久前我写了一篇关于这个问题的文章,Cross Domain
AJAX。

如果您可以控制响应服务器,则处理此问题的最简单方法是为以下内容添加响应标头:

Access-Control-Allow-Origin: *

这将允许跨域Ajax。在 PHP
中,您需要像这样修改响应:

<?php header(''Access-Control-Allow-Origin: *''); ?>

您可以将Header set Access-Control-Allow-Origin*设置放在Apache配置或 htaccess
文件中。

应该注意的是,这有效地禁用了 CORS 保护,这 很可能使您的用户受到攻击
。如果您不知道您特别需要使用通配符,则不应使用它,而应将您的特定域列入白名单:

<?php header(''Access-Control-Allow-Origin: http://example.com'') ?>

Access-Control-Allow-Origin 不起作用

Access-Control-Allow-Origin 不起作用

如何解决Access-Control-Allow-Origin 不起作用?

我有一个 Web Api 而且由于我根据互联网教程进行了所有设置,但是在 JavaScript Fetch 中我仍然收到错误 我将以下代码放在网络配置中:

<httpProtocol>
    <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />               
    </customHeaders>
</httpProtocol>

我将以下代码放入全局:

protected void Application_BeginRequest(object sender,EventArgs e)
    {
        HttpContext.Current.response.addheader
         (name: "Access-Control-Allow-Origin",value: "*");
        HttpContext.Current.response.addheader
         (name: "Access-Control-Allow-Credentials",value: "true");
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

Access-Control-Allow-Origin 与 Ajax 跨域

Access-Control-Allow-Origin 与 Ajax 跨域

问题

在某域名下使用 Ajax 向另一个域名下的页面请求数据,会遇到跨域问题。另一个域名必须在 response 中添加 Access-Control-Allow-Origin 的 header,才能让前者成功拿到数据。

这句话对吗?如果对,那么流程是什么样的?

跨域

怎样才能算跨域?协议,域名,端口都必须相同,才算在同一个域。

参考:

  • Are different ports on the same server considered cross-domain? (Ajax-wise) 
  • 同事李栋的博客:跨源资源共享

当跨域访问时,浏览器会发请求吗

这是真正困扰我们的问题,因为我们不清楚浏览器会怎么做。它会不会检查到你要请求的地址不是同一个域的,直接就禁止了呢?

我在 jsbin 上 做了一个试验 ,使用 Chrome 打开。当点击 “Run with Js” 时,控制台上会打出:

XMLHttpRequest cannot load http://google.com/. No ''Access-Control-Allow-Origin'' header is present on the requested resource. Origin ''http://run.jsbin.io'' is therefore not allowed access. 

但开发者工具的”Network” 栏并没有任何记录。它到底发请求了没?

我又使用 python -m SimpleHTTPServer 在本地创建了一个小服务器,然后把地址改成它,结果发现在 python 这边的确打印出请求来了,可见浏览器的确发出了请求。

Access-Control-Allow-Origin

现在该 Access-Control-Allow-Origin 出场了。只有当目标页面的 response 中,包含了 Access-Control-Allow-Origin 这个 header,并且它的值里有我们自己的域名时,浏览器才允许我们拿到它页面的数据进行下一步处理。如:

Access-Control-Allow-Origin: http://run.jsbin.io

如果它的值设为 * ,则表示谁都可以用:

Access-Control-Allow-Origin: *

没错,在产品环境中,没人会用 *

你可以阅读下面这篇文章了解更多,并可找到其中的”Run Sample” 链接,实际体验一下:

http://www.html5rocks.com/en/tutorials/cors/

public HttpResponseMessage Get(string fatherId)
{
	string str = JsonConvert.SerializeObject(GetAleCategorysByFid(fatherId), Formatting.Indented);           
	HttpResponseMessage result = new HttpResponseMessage { Content = new StringContent(str, Encoding.GetEncoding("UTF-8"), "application/json") };
	result.Headers.Add("Access-Control-Allow-Origin", "*");
	return result;
}

今天关于Access-Control-Allow-Origin 通配符子域、端口和协议access control allow origin 配置的讲解已经结束,谢谢您的阅读,如果想了解更多关于Access-Control-Allow-Origin 不允许 Origin null、Access-Control-Allow-Origin 不允许来源、Access-Control-Allow-Origin 不起作用、Access-Control-Allow-Origin 与 Ajax 跨域的相关知识,请在本站搜索。

本文标签: