标签: cross-domain

如何在我的网站上实施"使用谷歌登录"?

在我的网站上,我想允许用户使用Google帐户登录.我打算使用openid,但我想允许使用google登录,因为它有更多好处.我曾经注意到一些网站能够使用google(gmail)帐户和IIRC登录,虽然他们不支持openID(但我可能错了).

如何实施"使用谷歌登录"?

openid gmail login cross-domain google-oauth

57
推荐指数
4
解决办法
9万
查看次数

XMLHttpRequest无法使用jQuery加载URL

我正试图从"远程"网站获取一些json数据.我在99000端口上运行我的Web服务然后,我在99001端口上启动我的网站(http:// localhost:99001/index.html).

我收到以下消息:

    XMLHttpRequest cannot load http://localhost:99000/Services.svc/ReturnPersons. Origin http://localhost:99001 is not allowed by Access-Control-Allow-Origin.
Run Code Online (Sandbox Code Playgroud)

即使我将我的网页作为HTML文件启动,我也会这样:

    XMLHttpRequest cannot load http://localhost:99000/Services.svc/ReturnPersons.Origin null is not allowed by Access-Control-Allow-Origin.
Run Code Online (Sandbox Code Playgroud)

Web服务返回数据.我尝试捕获这样的数据项:

var url = "http://localhost:99000/Services.svc/ReturnPersons";
$.getJSON(url, function (data) {
success: readData(data)
});
function readData(data) {
    alert(data[0].FirstName);
}
Run Code Online (Sandbox Code Playgroud)

而我正试图得到这种结构:

[{"FirstName":"Foo","LastName":"Bar"},{"Hello":"Foo","LastName":"World"}]
Run Code Online (Sandbox Code Playgroud)

你知道我为什么会收到这个错误吗?

jquery json cross-domain cors

55
推荐指数
4
解决办法
30万
查看次数

在Safari中禁用同源策略

出于开发目的,我需要在我的机器上的Safari(在Windows上)禁用同源策略.

在Chrome中,可以通过使用标志启动来完成此操作--disable-web-security.Safari中是否有等效的标志或隐藏设置?

safari cross-domain same-origin-policy

53
推荐指数
4
解决办法
9万
查看次数

Chrome中的"Access-Control-Allow-Origin"不允许"原点为null".为什么?

我正在研究一些Javascript在我的电脑上本地运行.我正在使用jQuery CSV插件(http://plugins.jquery.com/project/csv)将csv文件加载到javascript数组中.脚本很简单:

$(function(){
 $.get("file.csv", function(data){
  stuff = $.csv()(data);
 })
})
Run Code Online (Sandbox Code Playgroud)

在Firefox中它工作正常,但在Chrome中它说"Access-Control-Allow-Origin不允许使用Origin null".那是什么意思?我找到了与此错误相关的跨服务器内容的各种线程,但我只是使用本地文件.

javascript google-chrome xmlhttprequest cross-domain

50
推荐指数
2
解决办法
8万
查看次数

如何创建跨域请求?

如何使用Angular 2创建跨域请求?

你能提供一个例子吗?
就像localhost:3000和localhost:8000跨域之间的请求一样

http cross-domain cors angular

50
推荐指数
4
解决办法
9万
查看次数

我可以使用python的SimpleHTTPServer设置标头吗?

我正在SimpleHTTPServer测试一些我正在研究的网页.它工作得很好,但我需要做一些跨域请求.这需要设置Access-Control-Allow-Origin允许页面访问的域的标头.

有一种简单的方法可以使用SimpleHTTPServer设置标头并提供原始内容吗?每个请求的标头都是相同的.

python cross-domain simplehttpserver

48
推荐指数
3
解决办法
3万
查看次数

是否可以执行异步跨域文件上传?

有可能的!参见下文.


首先,让我使用此图解释如何实现异步文件上传:


抱歉.我关闭了我的一个域名,图像现在已经消失了.这是一个非常好的形象.这是在我发现Stack Overflow允许通过Imgur上传图像之前.


正如您所看到的,诀窍是让HTTP响应加载到隐藏的IFRAME元素而不是页面本身.(这是通过target在使用JavaScript提交FORM时设置FORM元素的属性来完成的.)

这有效.但是,我面临的问题是服务器端脚本位于不同的域上.FORM-submit是一个跨域HTTP请求.现在,服务器端脚本启用了CORS,这使我的网页有权读取从我的页面到该脚本发出的HTTP请求的响应数据 - 但这只有在我通过Ajax接收HTTP响应时才有效, ergo,JavaScript.

但是,在这种情况下,响应指向IFRAME元素.一旦XML响应进入IFRAME,其URL将是删除脚本 - 例如http://remote-domain.com/script.pl.

不幸的是,CORS没有涵盖这种情况(至少我认为) - 我无法读取IFRAME的内容,因为它的URL与页面的URL(不同的域)不匹配.我收到此错误:

不安全的JavaScript尝试使用URL hxxp://my-domain.com/outer.html从具有URL hxxp://remote-domain.com/script.pl的框架访问框架.域,协议和端口必须匹配.

由于IFRAME的内容是一个XML文档,因此IFRAME中没有可以使用的JavaScript代码postMessage.

所以我的问题是:如何从IFRAME获取XML内容?

正如我上面所说,我能够直接检索跨域HTTP响应(启用CORS),但似乎我无法在加载到IFRAME后读取跨域HTTP响应.

好像这个问题不够无法解决,让我排除这些解决方案:

  1. easyXDM和类似技术需要远程域上的端点,

  2. 改变XML响应(包括SCRIPT元素),

  3. 服务器端代理 - 我知道我的域可以有一个服务器端脚本,可以作为代理.

那么,除了这两个解决方案,这可以做到吗?


可以办到!!

事实证明,可以伪造一个模仿multipart/form-dataFORM提交的XHR请求(Ajax请求)(在上面的图像中用于将文件上传到服务器).

诀窍是使用FormData构造函数 - 阅读此Mozilla Hacks文章以获取更多信息.

这是你如何做到的:

// STEP 1
// retrieve a reference to the file
// <input type="file"> elements have a "files" property
var file = input.files[0];

// STEP 2
// …
Run Code Online (Sandbox Code Playgroud)

html javascript iframe file-upload cross-domain

47
推荐指数
1
解决办法
2万
查看次数

跨域AJAX不发送X-Requested-With标头

http://www.a.com/service.asmx上创建Web服务,并从http://www.b.com向其发送跨域ajax请求.检查Firebug中的标头,或Live HTTP标头或您希望的任何其他插件.

请求标头中没有X-Requested-With HTTP标头字段的跟踪.

但是,如果您从同一域(例如http://www.a.com/about)向同一服务发送ajax请求,您将看到该头字段.

为什么跨域ajax请求省略了X-Requested-With头字段?

更新:我知道JSONP调用本质上不是AJAX调用.因此,在JSONP调用中,您将看不到任何X-Requested-With标头字段.

ajax cross-domain http-headers cors

47
推荐指数
1
解决办法
7万
查看次数

使用jQuery.ajax和JSONP设置标头?

我试图用jQuery访问谷歌文档.这是我到目前为止所拥有的:

var token = "my-auth-token";
$.ajax({
  url: "http://docs.google.com/feeds/documents/private/full?max-results=1&alt=json",
  dataType: 'jsonp',
  beforeSend: function(xhr) {
    xhr.setRequestHeader("Authorization", "GoogleLogin auth=" + token);
  },
  success: function(data, textStatus, XMLHttpRequest) {
  },
  error: function(XMLHttpRequest, textStatus, errorThrown) {
  }
});
Run Code Online (Sandbox Code Playgroud)

如果我设置dataTypejsonp(来自使用jQuery创建跨域Ajax请求),它不允许我设置标头.如果我遗漏jsonp,我无法提出跨域请求.如果我使用jQuery.getJSON,我不能传入任何标题...

在制作跨域ajax请求时(在jQuery中)有没有办法定义自定义标头?

ajax jquery header cross-domain

46
推荐指数
1
解决办法
4万
查看次数

缓存图像的CORS策略

在chrome 22&safari 6中.

使用支持CORS的S3存储桶从s3加载图像以在画布中使用(以提取为主要目的),具有以下代码:

<!-- In the html -->
<img src="http://s3....../bob.jpg" /> 

// In the javascript, executed after the dom is rendered
this.img = new Image();
this.img.crossOrigin = 'anonymous';
this.img.src = "http://s3....../bob.jpg";
Run Code Online (Sandbox Code Playgroud)

我观察到以下情况:

  1. 禁用缓存
  2. 一切正常,两个图像加载

然后在启用缓存的情况下尝试:

  1. 启用缓存
  2. DOM图像加载,画布图像创建一个dom安全例外

如果我修改代码的javascript部分以附加查询字符串,如下所示:

this.img = new Image();
this.img.crossOrigin = 'anonymous';
this.img.src = "http://s3....../bob.jpg?_";
Run Code Online (Sandbox Code Playgroud)

一切正常,即使完全启用了缓存.我通过使用http代理继续进行缓存是一个问题,并观察到在失败的情况下,实际上没有从服务器请求图像.

我不得不得出的结论是,图像缓存正在保存原始请求头,然后将其用于后续启用CORS的请求 - 并且由于违反相同的源策略而生成安全性异常.

这是预期的行为吗?

编辑:在Firefox中工作.

Edit2:关于s3存储桶的Cors策略

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
    </CORSRule>
</CORSConfiguration>
Run Code Online (Sandbox Code Playgroud)

我正在使用大开放,因为我现在只是从我当地的盒子进行测试.这还没有投入生产.

Edit3:更新了cors策略以指定原点

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>http://localhost:5000</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
    </CORSRule>
</CORSConfiguration>
Run Code Online (Sandbox Code Playgroud)

已验证的传出标题

Origin …
Run Code Online (Sandbox Code Playgroud)

javascript html5 canvas amazon-s3 cross-domain

46
推荐指数
3
解决办法
4747
查看次数