2015-12-21 46 views
2

在我的EVE配置中,我定义了SCHEMA_ENDPOINT='schema',这样当我执行获取api_root/schema/resource时,我得到该资源的模式。我也有X_DOMAINS='*',所以当我打电话给api_root/resource/item时,我得到从任何域调用我的API时调用的项目。这两个现在都分开工作。如何使用EVE中的CORS调用get-up模式端点?

但是,如果我叫api_root/schema/resource甚至只是api_root/schema,这会给我我所有的资源的模式,与CORS,其中发送OPTIONS预检要求,它失败的预检要求。所以,当我做出一个比一个不同的域一个AJAX调用API托管在我的铬收到此错误信息:

XMLHttpRequest cannot load http://api.dev:5000/v1/schema/resource. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://test.dev:5002' is therefore not allowed access.

现在我没有这个问题与任何其他调用它使用CORS。就像我说的,我在拨打api_root/resource时没有这个问题。所以我不认为这是客户端问题。是否有某种服务器端实现可以使架构端点与CORS一起工作?

UPDATE:

所以发送OPTIONS而不是GET,如果问题。例如:

$ curl -I -X OPTIONS -H "Origin: test.com" 'http://127.0.0.1:5000/v1/schema/order' --verbose 
* Hostname was NOT found in DNS cache 
* Trying 127.0.0.1... 
* Connected to 127.0.0.1 (127.0.0.1) port 5000 (#0) 
> OPTIONS /v1/schema/order HTTP/1.1 
> User-Agent: curl/7.35.0 
> Host: 127.0.0.1:5000 
> Accept: */* 
> Origin: http://test.com 
> 
* HTTP 1.0, assume close after body 
< HTTP/1.0 200 OK 
< Content-Type: text/html; charset=utf-8 
< Allow: HEAD, OPTIONS, GET 
< Content-Length: 0 
< Server: Eve/0.6.2.dev0 Werkzeug/0.10.4 Python/2.7.6 
< Date: Mon, 11 Jan 2016 16:57:39 GMT 

回答

0

我测试SCHEMA_ENDPOINT与CORS和一切似乎工作正常。在我的设置,我有:

X_DOMAINS = '*' 
SCHEMA_ENDPOINT = 'schema' 

我的飞行前的要求:

curl -H "Origin: http://test.com" --verbose http://localhost:5000/schema 

> GET /schema/contacts HTTP/1.1 
> Host: localhost:5000 
> User-Agent: curl/7.43.0 
> Accept: */* 
> Origin: http://test.com 

< HTTP/1.0 200 OK 
< Access-Control-Allow-Origin: http://test.com 
< Vary: Origin 
< Access-Control-Allow-Headers: 
< Access-Control-Expose-Headers: 
< Access-Control-Allow-Methods: HEAD, OPTIONS, GET 
< Access-Control-Allow-Max-Age: 21600 
< Server: Eve/0.6.2.dev0 Werkzeug/0.10.4 Python/2.7.8 

情况与此相同/schema/resource。请注意,-Headers是空的,因为在我的测试中,我没有设置任何X_HEADERS或​​。

编辑:更新后,我看到问题是(是)与OPTIONS。它已经固定在上游,并将在v0.6.2中发布。

+0

这也适用于我,但问题是发送'OPTIONS'而不是'GET'。我更新了我的问题以反映这一点。 –

+0

查看我的更新回答。 –

+0

@SirNeuman它已被固定在上游 - 答案已更新。谢谢。 –

相关问题