相关疑难解决方法(0)

为什么我的JavaScript在所请求的资源上出现"No'Access-Control-Allow-Origin'标头"错误,当Postman没有?

我试图通过连接到Flask内置的RESTful API来使用JavaScript进行授权.但是,当我发出请求时,我收到以下错误:

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

我知道API或远程资源必须设置标题,但为什么在我通过Chrome扩展程序Postman发出请求时它可以正常工作?

这是请求代码:

$.ajax({
    type: "POST",
    dataType: 'text',
    url: api,
    username: 'user',
    password: 'pass',
    crossDomain : true,
    xhrFields: {
        withCredentials: true
    }
})
    .done(function( data ) {
        console.log("done");
    })
    .fail( function(xhr, textStatus, errorThrown) {
        alert(xhr.responseText);
        alert(textStatus);
    });
Run Code Online (Sandbox Code Playgroud)

javascript jquery same-origin-policy cors flask-restless

2320
推荐指数
29
解决办法
399万
查看次数

如何根据请求中的Origin头正确设置nginx Access-Control-Allow-Origin到响应头?

我正在寻找一个nginx配置设置,它确实设置了Access-Control-Allow-Origin收到的值Origin.

似乎该*方法不适用于Chrome,并且多个URL不适用于Firefox,因为CORS规范不允许这样做.

到目前为止,唯一的解决方案是设置Access-Control-Allow-Origin原始接收的值(是的,可以实现一些验证).

问题是如何在nginx中执行此操作,最好不要安装其他扩展.

set $allow_origin "https://example.com"
# instead I want to get the value from Origin request header
add_header 'Access-Control-Allow-Origin' $allow_origin;
Run Code Online (Sandbox Code Playgroud)

javascript nginx cors

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

nginx 配置以启用具有源匹配的 CORS

我尝试为 nginx使用一个非常流行的配置,它启用 CORS 并支持使用正则表达式进行源匹配。

这是我的配置:

server {
    listen 80 default_server;
    root /var/www;

    location / {
        if ($http_origin ~ '^http://(www\.)?example.com$') {
            add_header Access-Control-Allow-Origin "$http_origin";
        }

        # Handling preflight requests
        if ($request_method = OPTIONS) {
            add_header Content-Type text/plain;
            add_header Content-Length 0;
            return 204;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,此配置必须使用两个条件:一个是匹配原始域名,另一个是捕获预检请求。因此,当第二个条件匹配时,第一个条件的标头不会添加到响应中。

根据If Is Evil官方文章,这是 nginx 的预期行为。

如果If Is Evil我如何在 nginx 中启用 CORS 呢?或者也许有办法以某种方式克服这种限制?

nginx cross-domain cors preflight

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

cors 子域失败

CORS 对于域和子域无法正常工作。我有一个 NodeJS服务器托管在https://api.example.com我有两个 ReactJS 客户端

客户端 1. https://example.com

客户端 2. https://subdomain.example.com

我已将客户端 1 配置为强制使用 www,以便客户端 1 使用单个源。当我打开 Clien1 时,它工作正常。当我打开 Client2 时,我收到错误消息

CORS 策略阻止了在“ https://api.example.com/someAPI ”处从源“ https://subdomain.example.com ”访问 XMLHttpRequest :“Access-Control-Allow-Origin”标头具有值 ' https://www.example.com ' 不等于提供的来源

当我按 Ctrl+F5 时,它工作正常,但之后如果我刷新 Client1,则错误出现在 Client1

CORS 策略阻止了从源“ https://www.example.com ”访问“ https://api.example.com/someAPI ”处的 XMLHttpRequest :“Access-Control-Allow-Origin”标头具有值 ' https://subdomain.example.com ' 不等于提供的来源。

现在,当我在 Client1 上按 Ctrl+F5 时,它工作正常,但同样的错误会发生在 Client2 上。

我的nodeJS服务器配置如下

var whitelist = ['https://www.example.com', 'https://subdomain.example.com'];
    getCorsCoptions(req, callback) {
    var getOriginValue = () => {
      if (whitelist.indexOf(req.header('origin')) !== -1) {
        return …
Run Code Online (Sandbox Code Playgroud)

node.js cors express reactjs axios

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