相关疑难解决方法(0)

Access-Control-Allow-Origin标头如何工作?

显然,我完全误解了它的语义.我想到了这样的事情:

  1. 客户端从http:// siteA下载javascript代码MyCode.js - 原点.
  2. MyCode.js的响应头包含Access-Control-Allow-Origin:http:// siteB,我认为这意味着允许MyCode.js对站点B进行跨源引用.
  3. 客户端触发MyCode.js的一些功能,它们反过来向http:// siteB发出请求,尽管是跨源请求,但这应该没问题.

好吧,我错了.它根本不起作用.所以,我已经阅读了跨源资源共享,并尝试在w3c推荐中阅读跨源资源共享

有一件事是肯定的 - 我仍然不明白我应该如何使用这个标题.

我完全控制了站点A和站点B.如何启用从站点A下载的javascript代码以使用此标头访问站点B上的资源?

PS

我不想使用JSONP.

javascript cross-domain cors

1050
推荐指数
13
解决办法
144万
查看次数

Access-Control-Allow-Origin多个源域?

有没有办法允许多个跨域使用Access-Control-Allow-Origin标头?

我知道了*,但它太开放了.我真的想只允许一些域名.

举个例子,像这样:

Access-Control-Allow-Origin: http://domain1.example, http://domain2.example
Run Code Online (Sandbox Code Playgroud)

我已经尝试过上面的代码,但它似乎不适用于Firefox.

是否可以指定多个域,或者我只坚持一个?

.htaccess http xmlhttprequest cross-domain cors

985
推荐指数
17
解决办法
74万
查看次数

Access-Control-Allow-Origin通配符子域,端口和协议

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

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

通常情况下,我想启用匹配(并限于)的来源请求:

//*.mywebsite.com:*/*

cors

285
推荐指数
5
解决办法
30万
查看次数

API网关CORS:没有'Access-Control-Allow-Origin'标头

虽然已经通过API网关设置了CORS并且设置了Access-Control-Allow-Origin标头,但在尝试从Chrome中的AJAX调用API时仍然会收到以下错误:

XMLHttpRequest无法加载http://XXXXX.execute-api.us-west-2.amazonaws.com/beta/YYYYY.请求的资源上不存在"Access-Control-Allow-Origin"标头.因此不允许原点'null'访问.响应具有HTTP状态代码403.

我试图通过Postman获取URL ,它显示上面的标题已成功通过:

通过标题

并从OPTIONS响应:

响应标头

如何在不恢复JSON-P的情况下从浏览器调用我的API?

ajax amazon-web-services cors aws-api-gateway

67
推荐指数
9
解决办法
5万
查看次数

如何在flask和heroku中启用CORS

我正在尝试使用jquery创建一个交叉原始请求,但它一直被消息拒绝

XMLHttpRequest无法加载http:// ...请求的资源上不存在"Access-Control-Allow-Origin"标头.原因......因此不允许访问.

我正在使用flask,heroku和jquery

客户端代码如下所示:

$(document).ready(function() {
    $('#submit_contact').click(function(e){
        e.preventDefault();
        $.ajax({
            type: 'POST',
            url: 'http://...',
            // data: [
            //      { name: "name", value: $('name').val()},
            //      { name: "email", value: $('email').val() },
            //      { name: "phone", value: $('phone').val()},
            //      { name: "description", value: $('desc').val()}
            //
            // ],
            data:"name=3&email=3&phone=3&description=3",
            crossDomain:true,
            success: function(msg) {
                alert(msg);
            }
        });
    }); 
});
Run Code Online (Sandbox Code Playgroud)

在heroku方面,我正在使用烧瓶,就像这样

from flask import Flask,request
from flask.ext.mandrill import Mandrill
try:
    from flask.ext.cors import CORS  # The typical way to import flask-cors
except ImportError:
    # Path …
Run Code Online (Sandbox Code Playgroud)

python jquery heroku cors flask

38
推荐指数
9
解决办法
6万
查看次数

S3没有返回Access-Control-Allow-Origin标头?

我无法强迫S3在从桶返回的所有对象上设置CORS头,虽然启用了CORS,因为客户端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>
        <AllowedMethod>POST</AllowedMethod>
        <AllowedMethod>PUT</AllowedMethod>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
</CORSConfiguration>
Run Code Online (Sandbox Code Playgroud)

示例对象URL https://s3.amazonaws.com/captionable/meme/test

有谁知道什么是错的?

amazon-s3 cors

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

使用凭证进行跨源资源共享

我在多个子域(example.com,blog.example.com和app.example.com)上有一个通用的身份验证表单.登录表单必须将此数据提交给example.com而不管它在何处显示,所以我想到了使用CORS,但是这个:

header("Access-Control-Allow-Origin: http://example.com http://blog.example.com http://app.example.com")
Run Code Online (Sandbox Code Playgroud)

不起作用

所以我想做下一件事,并在服务器端手动检查Origin标头,并允许Access-Control-Allow-Origin: *可以进行请求,但不幸的是,这在MDN中出现了

重要说明:在响应凭证请求时,服务器必须指定域,并且不能使用通配符.

有没有办法让我的请求跨多个域工作,仍然使用CORS发送凭据?

http cors

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

为什么这个CORS请求仅在Firefox中失败?

我正在使用凭据和预检请求实现CORS,我有点不知道为什么预检请求在Firefox 30中始终失败但在Safari(7.0.2)和Chrome 35中有效.我认为这个问题与" 为什么会这样做有所不同" 经过身份验证的CORS请求的预检OPTIONS请求在Chrome中运行但不在Firefox中运行? "因为我没有收到401,而是来自浏览器客户端的特定于CORS的消息:

"跨源请求被阻止:同源策略不允许在http://myurl.dev.com上读取远程资源.这可以通过将资源移动到同一域或启用CORS来解决."

没有显示源代码,这就是我正在做的事情:

在服务器上:

OPTIONS响应的标题:

  • Access-Control-Allow-Origin:[[来自请求的原点]]
  • 访问控制允许方法:"POST获取选项"
  • Access-Control-Allow-Headers:"X-Requested-With"
  • Access-Control-Allow-Credentials:"true"

POST响应的标题:

  • Access-Control-Allow-Origin:[[来自请求的原点]]
  • Access-Control-Allow-Credentials:"true"

在浏览器客户端中:

jQuery.ajax({
  url: requestUrl,
  type: 'POST',
  data: getData(),
  xhrFields: {
    withCredentials: true
  }
});
Run Code Online (Sandbox Code Playgroud)

根据规范,这将触发OPTIONS预检请求,该请求需要在其响应中具有CORS头.我已经多次阅读过W3C规范了,在预检响应中我无法确定我做错了什么,如果有的话.

firefox cors fetch-api

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

Angular:当credentials标志为true时,不能在'Access-Control-Allow-Origin'标头中使用通配符'*'

我知道有很多关于CORS的问题,但它们似乎没有回答我的问题.

所以我有一个用Angular编写的客户端应用程序,用于创建移动应用程序(使用Apache Cordova).将从移动设备加载html文件和JavaScript文件.当我模拟这个并且我向REST API服务器发送请求时,我首先得到"No'Access-Control-Allow-Origin'标头出现在所请求的资源上.http://localhost:82因此不允许来源".所以我添加了标题("Access-Control-Allow-Origin:*"); 在我的PHP REST API服务器中.我无法指定特定域,因为请求将来自移动设备.

现在,当凭证标志为真时,我不能在'Access-Control-Allow-Origin'标题中使用"通配符'*'."

我终于找到了一个解决方案,但我不确定这样做是否安全.

在我的PHP REST API服务器中,我添加了这个:

if (isset($_SERVER['HTTP_ORIGIN'])) {
   header("Access-Control-Allow-Credentials: true");
   header("Access-Control-Allow-Origin: " . $_SERVER['HTTP_ORIGIN']);
   header("Access-Control-Allow-Headers: *, X-Requested-With, Content-Type");
   header("Access-Control-Allow-Methods: GET, POST, DELETE, PUT");
}
Run Code Online (Sandbox Code Playgroud)

请告知这种工作方式.如果它不安全或根本没有好处,请告诉我如何解决这个问题?

非常感谢!

rest cors cordova ionic-framework angular

17
推荐指数
1
解决办法
6万
查看次数

使S3 CORS Access-Control-Allow-Origin动态回应请求域

如何设置S3 CORS AllowedOrigin配置,使其动态回显Access-Control-Allow-Origin标头中的请求域?

在帖子"CORS with CloudFront,S3和Multiple Domains"中,建议设置AllowedOrigin<AllowedOrigin>*</AllowedOrigin>执行此操作.但是,S3会返回Access-Control-Allow-Origin: *.

Access-Control-Allow-Origin: *在我的情况下不起作用,因为我image.crossOrigin = "use-credentials"在JavaScript应用程序中使用.使用此选项,S3返回Access-Control-Allow-Credentials: true.然后对图像的跨源访问失败,因为不允许使用通配符作为允许的来源与凭证一起使用.

为什么需要这样的背景:

在我的设置中,对S3上的图像的访问必须通过我们的域,其中需要验证以限制访问并检查帐户是否被授权访问图像.如果是,则服务器返回302重定向到S3 URL.

要使身份验证生效,image.crossOrigin = "use-credentials"必须进行设置,以便请求使用所需的凭据访问我的服务器.(顺便提一下,当我在Firefox 30.0和Chrome 35.0.1916.153上进行测试时,如果crossOrigin设置为anonymous,则仍然会发送凭据.但是不能在Safari 7.0.4上进行.只能使用use-credentials.获得一致的跨浏览器行为.).

由于浏览器透明地重定向到S3 URL,因此也会发送凭据.

amazon-s3 cors

13
推荐指数
2
解决办法
9368
查看次数