CORS预检频道没有成功

Nic*_*n16 9 cross-domain cors ember.js ember-simple-auth

我正在尝试使用PHP REST框架构建一个Ember应用程序作为我的api本地.Ember应用程序正在服务,http://localhost:4200api正在服务http://localhost.这导致了CORS问题.我已经尝试了我能想到的所有内容,但我一直收到错误,说请求被阻止,预检频道没有成功.它在Firefox或Chrome中无法成功.

我已将以下内容添加到.htaccess我的api文件中:

Header set Access-Control-Allow-Methods "GET, POST, OPTIONS"
Header set Access-Control-Allow-Origin "http://localhost:4200"
Header set Access-Control-Allow-Credentials true
Header set Access-Control-Allow-Headers "accept, content-type"
Run Code Online (Sandbox Code Playgroud)

这是我的请求标题:

Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Origin: http://localhost:4200
Access-Control-Request-Method: POST
Access-Control-Request-Headers: content-type
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Run Code Online (Sandbox Code Playgroud)

响应头:

Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: accept, content-type
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Allow-Origin: http://localhost:4200
Connection: close
Content-Type: text/html; charset=utf-8
Date: Fri, 24 Jul 2015 17:10:49 GMT
Server: Apache/2.4.9 (Win64) PHP/5.5.12
Set-Cookie: 24fd751c8630b64fcf935a94e8bcef46=qih6pfnqo94d4cgi5b5d79h4i6; path=/
Transfer-Encoding: chunked
X-Powered-By: PHP/5.5.12
p3p: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
Run Code Online (Sandbox Code Playgroud)

任何想法或解决方案?任何帮助表示赞赏.谢谢!

ozn*_*znu 7

您的飞行前OPTIONS请求是否返回 200?您可以尝试使用 .htaccess 返回 200 响应,如下所示:

Header always set Access-Control-Allow-Methods "GET, POST, OPTIONS"
Header always set Access-Control-Allow-Origin "http://localhost:4200"
Header always set Access-Control-Allow-Credentials true
Header always set Access-Control-Allow-Headers "accept, content-type"

RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L]
Run Code Online (Sandbox Code Playgroud)


Buy*_*yuk 1

如此答案所述,正确处理飞行前 OPTIONS 请求是必要的,但对于跨站点资源请求的工作来说还不够。预检后对任何后续请求的所有响应都必须包含 Access-Control-Allow-Headers。希望这可以帮助。