使用angularJS代码无法正常使用远程服务器设置$ _SESSION(php)

时间:2015-11-02 07:59:42

标签: php session cross-domain cors remote-server

我有一个用于登录authenrication的php的api:

http://somerestsertver.net/sampleapi/auth-login这会设置登录会话ID(例如,在验证用户凭据后)

http://somerestsertver.net/sampleapi/auth-check如果设置了会话ID,则检查登录是否有效

http://somerestsertver.net/sampleapi/auth-logout这会破坏会话并需要退出...

在代码中进行auth-login时,我使用$ _SESSION [“id”] = 1设置登录 然后auht-check就可以了,否则auth-check将包含错误。

我在浏览器或ReST客户端中调用这些网址时没关系, 但在我的angularJS代码中使用它们会返回http://somerestsertver.net/sampleapi/auth-check的错误!

似乎客户端中的PHPSESSID无法使用会话集,但它无法正常工作 它与沙箱或CORS或html标头请求有关吗?

1 个答案:

答案 0 :(得分:1)

嗨,我这样终于解决了问题:

客户端,在angularJS中我把它放在我的route-config中以申请ReST-API的所有请求

$httpProvider.defaults.withCredentials = true;

我想我应该主要使用.htaccess for web server:

Header add Access-Control-Allow-Credentials "true"

但是为了引起你的注意,我最终将整个.htaccess文件更新为以下内容:

Header add Access-Control-Allow-Origin "http://localhost:3000"
Header add Access-Control-Allow-Credentials "true"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "GET, POST"
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
<FilesMatch "\.php$">
Order Allow,Deny
Deny from all
</FilesMatch>
<FilesMatch "index[0-9]?\.php$">
Order Allow,Deny
Allow from all
</FilesMatch>

我也在PHP中使用以下JSON响应:     $ response =“所需的JSON响应OBJECT”;     $ status ='OK或unauthenticated或......';     $ status ='200或403或......';     标题( “内容类型:应用/ JSON”);     header(“HTTP / 1.1 $ status $ status_message”);     echo json_encode($ response);     出口();

希望这个问题和答案可以帮助你