在这篇文章中,我们将为您详细介绍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 不允许 Origin null
- Access-Control-Allow-Origin 不允许来源
- Access-Control-Allow-Origin 不起作用
- Access-Control-Allow-Origin 与 Ajax 跨域
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
我制作了一个小的 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 不允许来源
我正在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 不起作用?
我有一个 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 跨域
问题
在某域名下使用 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 跨域的相关知识,请在本站搜索。
本文标签: