我有一个用于登录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标头请求有关吗?
答案 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); 出口();
希望这个问题和答案可以帮助你