在我的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
这也适用于我,但问题是发送'OPTIONS'而不是'GET'。我更新了我的问题以反映这一点。 –
查看我的更新回答。 –
@SirNeuman它已被固定在上游 - 答案已更新。谢谢。 –