好的,我有一个页面,在这个页面上我有一个iframe.我需要做的是在iframe页面上,找出主页面的URL是什么.
我已经搜索过,我知道如果我的iframe页面位于不同的域上,这是不可能的,因为这是跨站点脚本.但是我读过的每个地方都说如果iframe页面和父页面在同一个域中,那么如果我这样做,它应该可以工作:
parent.document.location
Run Code Online (Sandbox Code Playgroud)
parent.window.document.location
Run Code Online (Sandbox Code Playgroud)
parent.window.location
Run Code Online (Sandbox Code Playgroud)
parent.document.location.href
Run Code Online (Sandbox Code Playgroud)
...或其他类似的组合,因为似乎有多种方法来获得相同的信息.
不管怎么说,这就是问题所在.我的iframe与主页面位于同一个域中,但它不在同一个SUB域中.所以我举个例子
http:// www.mysite.com/pageA.html
然后我的iframe网址是
http:// qa-www.mysite.com/pageB.html
当我尝试从pageB.html(iframe页面)获取URL时,我不断收到相同的访问被拒绝错误.所以看起来甚至子域都算作跨站点脚本,这是正确的,还是我做错了什么?
我过去几个小时一直在阅读关于Push Notification API和Web Notification API的内容.我还发现Google和Apple分别通过GCM和APNS免费提供推送通知服务.
我试图了解我们是否可以使用桌面通知向浏览器实施推送通知,我相信这是Web Notification API所做的.我在这里和这里看到了关于如何为Chrome做这件事的谷歌文档.
现在仍然无法理解的是:
我相信在一个答案中回答的所有问题都可以帮助很多有类似困惑的人.
javascript web-notifications google-cloud-messaging web-push push-api
我正在尝试在Go Web服务器中设置标题.我正在使用gorilla/mux和net/http打包.
我想设置Access-Control-Allow-Origin: *允许跨域AJAX.
这是我的Go代码:
func saveHandler(w http.ResponseWriter, r *http.Request) {
// do some stuff with the request data
}
func main() {
r := mux.NewRouter()
r.HandleFunc("/save", saveHandler)
http.Handle("/", r)
http.ListenAndServe(":"+port, nil)
}
Run Code Online (Sandbox Code Playgroud)
该net/http软件包包含描述发送http请求标头的文档,就像它是客户端一样 - 我不确定如何设置响应标头?
我尝试fetch了旧网站的网址,发生了错误:
Fetch API cannot load http://xyz.
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://abc' is therefore not allowed access.
If an opaque response serves your needs, set the request's mode to 'no-cors'
to fetch the resource with CORS disabled.
Run Code Online (Sandbox Code Playgroud)
我理解了该消息,并尝试执行返回不透明响应的请求:
fetch("http://xyz", {'mode': 'no-cors'})
Run Code Online (Sandbox Code Playgroud)
好吧,它现在有效...但我无法阅读它.= \
那么,不透明的反应的目的是什么?
我看到以下错误:
Origin http://localhost:8080 is not allowed by Access-Control-Allow-Origin
Run Code Online (Sandbox Code Playgroud)
使用此代码:
var http = new getXMLHttpRequestObject();
var url = "http://gdata.youtube.com/action/GetUploadToken";
var sendXML = '<?xml version="1.0"?><entry xmlns="http://www.w3.org/2005/Atom"'+
'xmlns:media="http://search.yahoo.com/mrss/'+
'xmlns:yt="http://gdata.youtube.com/schemas/2007">'+
'<media:group><media:title type="plain">My First API</media:title>'+
'<media:description type="plain">First API</media:description>'+
'<media:category scheme="http://gdata.youtube.com/schemas/2007/categories.cat">People</media:category>'+
'<media:keywords>first, api</media:keywords></media:group></entry>';
http.open("POST", url, true);
http.setRequestHeader("Authorization", "AuthSub token=" + AccessToken);
http.setRequestHeader("X-GData-Key", "key="+ dev_key);
http.setRequestHeader("Content-Type", "application/atom+xml; charset=UTF-8");
http.onreadystatechange = function() {
if(http.readyState == 4) {
alert(http.responseXML);
}
}
http.send(sendXML);
Run Code Online (Sandbox Code Playgroud)
是什么导致这种情况,我该如何解决?
XMLHttpRequest cannot load http://localhost:8080/api/test. Origin http://localhost:3000 is not allowed by Access-Control-Allow-Origin.
Run Code Online (Sandbox Code Playgroud)
我阅读了有关跨域ajax请求的信息,并了解了基础安全问题.就我而言,2台服务器在本地运行,并且喜欢在测试期间启用跨域请求.
localhost:8080 - Google Appengine dev server
localhost:3000 - Node.js server
Run Code Online (Sandbox Code Playgroud)
我正在localhost:8080 - GAE server从节点服务器加载我的页面时发出一个ajax请求.什么是最简单,最安全的(不想用disable-web-security选项启动chrome ).如果我必须改变'Content-Type',我应该在节点服务器上做吗?怎么样?
即使我使用适当的头设置服务器(nginx/node.js),我仍然遇到这个CORS问题.
我可以在Chrome网络窗格中看到 - >响应标题:
Access-Control-Allow-Origin:http://localhost
Run Code Online (Sandbox Code Playgroud)
应该做的伎俩.
这是我现在用来测试的代码:
var xhr = new XMLHttpRequest();
xhr.onload = function() {
console.log('xhr loaded');
};
xhr.open('GET', 'http://stackoverflow.com/');
xhr.send();
Run Code Online (Sandbox Code Playgroud)
我明白了
XMLHttpRequest cannot load http://stackoverflow.com/. Origin http://localhost is not allowed by Access-Control-Allow-Origin.
Run Code Online (Sandbox Code Playgroud)
我怀疑它是客户端脚本中的问题而不是服务器配置...
我读了很多关于'Access-Control-Allow-Origin'的错误,但我不明白我要解决的问题:(
我正在玩Google Moderator API,但是当我尝试添加新的系列时,我会收到:
XMLHttpRequest cannot load
https://www.googleapis.com/moderator/v1/series?key=[key]
&data%5Bdescription%5D=Share+and+rank+tips+for+eating+healthily+on+the+cheaps!
&data%5Bname%5D=Eating+Healthy+%26+Cheap
&data%5BvideoSubmissionAllowed%5D=false.
Origin [my_domain] is not allowed by Access-Control-Allow-Origin.
Run Code Online (Sandbox Code Playgroud)
我尝试使用和不使用回调参数,我尝试在标题中添加"Access-Control-Allow-Origin*".我不知道如何在这里使用$ .getJSON,如果申请,因为我必须添加Authorization标头,我不知道怎么做没有来自$ .ajax的beforeCall:/
这个黑暗的任何光明吗?
那是代码:
<script src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
var scope = "https://www.googleapis.com/auth/moderator";
var token = '';
function create(){
if (token == '')
token = doCheck();
var myData = {
"data": {
"description": "Share and rank tips for eating healthily on the cheaps!",
"name": "Eating Healthy & Cheap",
"videoSubmissionAllowed": false
}
};
$.ajax({
url: 'https://www.googleapis.com/moderator/v1/series?key='+key,
type: 'POST',
callback: '?',
data: …Run Code Online (Sandbox Code Playgroud) 我正在创建一个在其他网站上外部加载的脚本.它加载CSS和HTML,并在我自己的服务器上正常工作.
但是,当我在另一个网站上尝试它时,它会显示这个可怕的错误:
Access-Control-Allow-Origin
Run Code Online (Sandbox Code Playgroud)
在这里你可以看到它完美加载:http://tzook.info/bot/
但在其他网站上显示错误:http: //cantloseweight.co/robot/
我将加载脚本上传到jsfiddle:http: //jsfiddle.net/TL5LK/
我尝试像这样编辑htaccess文件:
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin *
</IfModule>
Run Code Online (Sandbox Code Playgroud)
或者像这样:
Header set Access-Control-Allow-Origin *
Run Code Online (Sandbox Code Playgroud)
但它仍然无效.
我最近不得不设置Access-Control-Allow-Origin为*能够进行跨子域ajax调用.
现在我不禁觉得我的环境存在安全风险.
如果我做错了,请帮助我.
cors ×8
javascript ×5
ajax ×4
cross-domain ×2
.htaccess ×1
fetch-api ×1
go ×1
google-api ×1
html5 ×1
http ×1
http-headers ×1
iframe ×1
jquery ×1
jsonp ×1
node.js ×1
push-api ×1
security ×1
web-push ×1
youtube-api ×1